import { test, expect } from "@playwright/test";
test("refund confirmation @critical", async ({ page }) => {
await page.goto("/orders/1/refund");
await page.getByRole("button", { name: "Confirm refund" }).click();
await expect(page.getByText("Refund queued")).toBeVisible();
});
jobs:
gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npx playwright install --with-deps chromium
- name: Critical paths (merge gate)
run: npx playwright test --grep @critical --reporter=github
- name: Full suite (informational)
if: always()
continue-on-error: true
run: npx playwright test --grep-invert @critical
- Merge is blocked only by @critical. Everything else can be red without stopping the train — but it still publishes a report.
- Known flakes get a ticket and a quarantine tag, not a silent retry loop. See AI quality engineering services if you need the factory to own that queue.
- Never add a coverage-percentage gate. Coverage can rise while refund is untested.