From f0f5cc670ec5acc594879279ce50b6c0615ca4ae Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 5 Aug 2026 16:29:12 +0000 Subject: [PATCH] =?UTF-8?q?H=C3=A5ll=20ALVA-ytan=20fri=20fr=C3=A5n=20butik?= =?UTF-8?q?ens=20driftmeddelanden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Betalningsbannern satt i App och undantog bara /felsokning, så den renderades ovanför ALVA-huvudet: "Skarpa betalningar är inte konfigurerade." En verkstad som ser ett driftmeddelande från en annan produkt läser det som att den tittar på något halvfärdigt. Det är ett trovärdighetsproblem, inte ett kosmetiskt. Undantaget jämför nu hela sökvägssegment i stället för prefix, så att /alvarlig inte råkar räknas som ALVA. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt --- .../src/components/PaymentTestModeBanner.tsx | 6 ++++-- .../src/felsokning/__tests__/alva-yta.test.ts | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/felsokning/app/src/components/PaymentTestModeBanner.tsx b/felsokning/app/src/components/PaymentTestModeBanner.tsx index 81ce52d..1859502 100644 --- a/felsokning/app/src/components/PaymentTestModeBanner.tsx +++ b/felsokning/app/src/components/PaymentTestModeBanner.tsx @@ -4,8 +4,10 @@ const clientToken = import.meta.env.VITE_PAYMENTS_CLIENT_TOKEN as string | undef export function PaymentTestModeBanner() { const { pathname } = useLocation(); - // Guidad Felsökning har inga betalningar — bannern gäller bara butiken. - if (pathname.startsWith("/felsokning")) { + // Bannern gäller butiken. ALVA och felsökningen har inga betalningar, + // och ett driftmeddelande från en annan produkt ovanför ALVA-huvudet + // säger till verkstaden att de tittar på något halvfärdigt. + if (["/felsokning", "/alva"].some((p) => pathname === p || pathname.startsWith(`${p}/`))) { return null; } if (!clientToken) { diff --git a/felsokning/app/src/felsokning/__tests__/alva-yta.test.ts b/felsokning/app/src/felsokning/__tests__/alva-yta.test.ts index 118689f..d11d63f 100644 --- a/felsokning/app/src/felsokning/__tests__/alva-yta.test.ts +++ b/felsokning/app/src/felsokning/__tests__/alva-yta.test.ts @@ -98,3 +98,24 @@ describe("ALVA-ytan följer designsystemet", () => { expect(udda).toEqual([]); }); }); + +// ---- Andra produkters meddelanden får inte synas på ALVA-ytan ---------- +// +// Bakgrund: butikens banner "Skarpa betalningar är inte konfigurerade" +// renderades ovanför ALVA-huvudet, eftersom den satt i App och bara +// undantog /felsokning. En verkstad som ser ett driftmeddelande från en +// annan produkt läser det som att den tittar på något halvfärdigt — och +// det är ett trovärdighetsproblem, inte ett kosmetiskt. +describe("ALVA-ytan är fri från andra produkters meddelanden", () => { + const banner = readFileSync("src/components/PaymentTestModeBanner.tsx", "utf8"); + + it("betalningsbannern undantar både /felsokning och /alva", () => { + expect(banner).toContain('"/felsokning"'); + expect(banner).toContain('"/alva"'); + }); + + it("undantaget matchar underliggande sökvägar, inte bara prefix på ordnivå", () => { + // "/alvarlig" ska inte räknas som ALVA. Regeln jämför hela segment. + expect(banner).toMatch(/pathname === p \|\| pathname\.startsWith\(`\$\{p\}\/`\)/); + }); +});