MAESTRO: stabilize progress waits in e2e

This commit is contained in:
Mariusz Banach
2026-02-18 07:10:30 +01:00
parent a6f3faa96a
commit 87a0bfff12
2 changed files with 12 additions and 7 deletions

View File

@@ -86,6 +86,6 @@ All tasks in this phase are parallelizable [P] since they are independent E2E sp
- [x] Visual regression baselines committed to `frontend/e2e/__snapshots__/`
- [x] Zero axe-core WCAG 2.1 AA violations across all tested views (verified via `npx playwright test e2e/accessibility.spec.ts`)
- [x] No horizontal scrollbar or layout issues at any tested viewport (3202560px)
- [ ] All user flows (paste, drop, select, analyse, report, cache, rate-limit) pass E2E
- [x] All user flows (paste, drop, select, analyse, report, cache, rate-limit) pass E2E
- [ ] Playwright test report generated (HTML report available for review)
- [ ] Run `/speckit.analyze` to verify consistency

View File

@@ -25,6 +25,11 @@ test("paste headers and analyse renders progress and report", async ({ page }) =
const progressIndicator = page.getByTestId("progress-indicator");
await expect(progressIndicator).toBeVisible({ timeout: 30000 });
const progressPercentage = progressIndicator.getByTestId("progress-percentage");
await expect(progressPercentage).toBeVisible();
const initialPercentage = parsePercentage(await progressPercentage.textContent());
expect(initialPercentage).toBeGreaterThanOrEqual(0);
const currentTest = page.getByTestId("progress-current-test");
await expect(currentTest).toBeVisible();
await expect(currentTest).not.toHaveText(/^\s*$/);
@@ -32,7 +37,11 @@ test("paste headers and analyse renders progress and report", async ({ page }) =
const firstTestName = (await currentTest.textContent())?.trim() ?? "";
await page.waitForFunction(
({ testId, previous }) => {
({ testId, previous, reportId }) => {
const report = document.querySelector(`[data-testid="${reportId}"]`);
if (report) {
return true;
}
const node = document.querySelector(`[data-testid="${testId}"]`);
if (!node) {
return false;
@@ -40,13 +49,9 @@ test("paste headers and analyse renders progress and report", async ({ page }) =
const nextValue = (node.textContent ?? "").trim();
return nextValue.length > 0 && nextValue !== previous;
},
{ testId: "progress-current-test", previous: firstTestName },
{ testId: "progress-current-test", previous: firstTestName, reportId: "report-container" },
);
const progressPercentage = page.getByTestId("progress-percentage");
const initialPercentage = parsePercentage(await progressPercentage.textContent());
expect(initialPercentage).toBeGreaterThanOrEqual(0);
await analyzer.waitForResults();
const resultCards = analyzer.getResultCards();