Håll ALVA-ytan fri från butikens driftmeddelanden

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
This commit is contained in:
Claude
2026-08-05 16:29:12 +00:00
parent 590fab3a70
commit f0f5cc670e
2 changed files with 25 additions and 2 deletions
@@ -4,8 +4,10 @@ const clientToken = import.meta.env.VITE_PAYMENTS_CLIENT_TOKEN as string | undef
export function PaymentTestModeBanner() { export function PaymentTestModeBanner() {
const { pathname } = useLocation(); const { pathname } = useLocation();
// Guidad Felsökning har inga betalningar — bannern gäller bara butiken. // Bannern gäller butiken. ALVA och felsökningen har inga betalningar,
if (pathname.startsWith("/felsokning")) { // 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; return null;
} }
if (!clientToken) { if (!clientToken) {
@@ -98,3 +98,24 @@ describe("ALVA-ytan följer designsystemet", () => {
expect(udda).toEqual([]); 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\}\/`\)/);
});
});