Cache waveform peaks and use direct URLs for faster replay loads #2402
Annotations
12 errors, 2 warnings, and 2 notices
|
[chromium] › tests/example-mvnv.spec.ts:174:1 › test:
tests/example-mvnv.spec.ts#L107
1) [chromium] › tests/example-mvnv.spec.ts:174:1 › test ──────────────────────────────────────────
Error: locator.check: Test timeout of 180000ms exceeded.
Call log:
- waiting for getByRole('radio').first()
105 | const radio = radioOptions.nth(i);
106 | if (await radio.isVisible().catch(() => false)) {
> 107 | await radio.check();
| ^
108 | break;
109 | }
110 | }
at answerCurrentMvnvPrompt (/home/runner/work/study/study/tests/example-mvnv.spec.ts:107:21)
at /home/runner/work/study/study/tests/example-mvnv.spec.ts:238:5
|
|
[chromium] › tests/example-mvnv.spec.ts:174:1 › test:
tests/example-mvnv.spec.ts#L0
1) [chromium] › tests/example-mvnv.spec.ts:174:1 › test ──────────────────────────────────────────
Test timeout of 180000ms exceeded.
|
|
🧪 webkit E2E Tests
Process completed with exit code 1.
|
|
[webkit] › tests/test-training-feedback.spec.ts:94:1 › test:
tests/test-training-feedback.spec.ts#L6
5) [webkit] › tests/test-training-feedback.spec.ts:94:1 › test ───────────────────────────────────
Error: expect(locator).toBeVisible() failed
Locator: getByRole('heading', { name: 'Introduction' })
Expected: visible
Timeout: 5000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 5000ms
- waiting for getByRole('heading', { name: 'Introduction' })
4 |
5 | async function goToTraining(page: Page) {
> 6 | await expect(page.getByRole('heading', { name: 'Introduction' })).toBeVisible();
| ^
7 |
8 | // Click on the next button
9 | await nextClick(page);
at goToTraining (/Users/runner/work/study/study/tests/test-training-feedback.spec.ts:6:69)
at /Users/runner/work/study/study/tests/test-training-feedback.spec.ts:103:9
|
|
[webkit] › tests/replay-current-trial-dynamic.spec.ts:114:1 › preserves non-dynamic routes when navigating directly:
tests/utils.ts#L86
4) [webkit] › tests/replay-current-trial-dynamic.spec.ts:114:1 › preserves non-dynamic routes when navigating directly
TimeoutError: locator.click: Timeout 2000ms exceeded.
Call log:
- waiting for getByRole('button', { name: 'Next', exact: true })
- locator resolved to <button type="submit" class="mantine-focus-auto mantine-active m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root">…</button>
- attempting click action
- waiting for element to be visible, enabled and stable
- element is visible, enabled and stable
- scrolling into view if needed
- done scrolling
- performing click action
at utils.ts:86
84 | await expect(nextButton).toBeEnabled({ timeout: remaining });
85 | try {
> 86 | await nextButton.click({ timeout: Math.min(2000, remaining), noWaitAfter: true });
| ^
87 | return;
88 | } catch (error) {
89 | const message = error instanceof Error ? error.message : String(error);
at nextClick (/Users/runner/work/study/study/tests/utils.ts:86:24)
at /Users/runner/work/study/study/tests/replay-current-trial-dynamic.spec.ts:127:3
|
|
[webkit] › tests/example-cleveland.spec.ts:5:1 › Test example cleveland:
tests/example-cleveland.spec.ts#L51
3) [webkit] › tests/example-cleveland.spec.ts:5:1 › Test example cleveland ───────────────────────
Error: expect(received).toBeGreaterThan(expected)
Expected: > 0
Received: 0
49 | await expect(vis).toBeVisible();
50 | const visChildren = await page.locator(visSearchArray[idx]);
> 51 | await expect(await visChildren.count()).toBeGreaterThan(0);
| ^
52 |
53 | // Fill in answer guess
54 | await page.getByPlaceholder('0-100').fill('66');
at /Users/runner/work/study/study/tests/example-cleveland.spec.ts:51:45
|
|
[webkit] › tests/demo-form-elements.spec.ts:52:1 › Test questionnaire component with responses and randomizing questions and responses:
tests/demo-form-elements.spec.ts#L136
2) [webkit] › tests/demo-form-elements.spec.ts:52:1 › Test questionnaire component with responses and randomizing questions and responses
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(locator).toBeVisible() failed
Locator: getByText('Custom Response')
Expected: visible
Error: strict mode violation: getByText('Custom Response') resolved to 3 elements:
1) <p data-size="sm" title="Custom Response" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Custom Response</p> aka locator('a').filter({ hasText: 'Custom Response' })
2) <h1 data-order="1" class="m_8a5d1357 mantine-Title-root">Custom Response</h1> aka getByRole('heading', { name: 'Custom Response' })
3) <p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">…</p> aka getByText('This page demonstrates a')
Call log:
- Expect "toBeVisible" with timeout 5000ms
- waiting for getByText('Custom Response')
134 |
135 | // Custom Response page
> 136 | await expect(page.getByText('Custom Response')).toBeVisible();
| ^
137 | const customResponseNextButton = page.getByRole('button', { name: 'Next', exact: true });
138 | await expect(customResponseNextButton).toBeEnabled();
139 | await page.getByRole('button', { name: 'Bar', exact: true }).click();
at /Users/runner/work/study/study/tests/demo-form-elements.spec.ts:136:51
|
|
[webkit] › tests/demo-form-elements.spec.ts:52:1 › Test questionnaire component with responses and randomizing questions and responses:
tests/utils.ts#L86
2) [webkit] › tests/demo-form-elements.spec.ts:52:1 › Test questionnaire component with responses and randomizing questions and responses
TimeoutError: locator.click: Timeout 2000ms exceeded.
Call log:
- waiting for getByRole('button', { name: 'Next', exact: true })
- locator resolved to <button type="submit" class="mantine-focus-auto mantine-active m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root">…</button>
- attempting click action
- waiting for element to be visible, enabled and stable
- element is visible, enabled and stable
- scrolling into view if needed
- done scrolling
- performing click action
at utils.ts:86
84 | await expect(nextButton).toBeEnabled({ timeout: remaining });
85 | try {
> 86 | await nextButton.click({ timeout: Math.min(2000, remaining), noWaitAfter: true });
| ^
87 | return;
88 | } catch (error) {
89 | const message = error instanceof Error ? error.message : String(error);
at nextClick (/Users/runner/work/study/study/tests/utils.ts:86:24)
at /Users/runner/work/study/study/tests/demo-form-elements.spec.ts:174:3
|
|
[webkit] › tests/test-skip-logic.spec.ts:192:1 › test:
tests/test-skip-logic.spec.ts#L197
1) [webkit] › tests/test-skip-logic.spec.ts:192:1 › test ─────────────────────────────────────────
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(locator).toBeVisible() failed
Locator: getByText('Please answer the following questions')
Expected: visible
Timeout: 5000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 5000ms
- waiting for getByText('Please answer the following questions')
195 | // Make sure that we loaded in
196 | const introText = await page.getByText('Please answer the following questions');
> 197 | await expect(introText).toBeVisible();
| ^
198 |
199 | // ***** All questions are correct *****
200 | await goToCheck(page, 'end');
at /Users/runner/work/study/study/tests/test-skip-logic.spec.ts:197:27
|
|
[webkit] › tests/test-skip-logic.spec.ts:192:1 › test:
tests/test-skip-logic.spec.ts#L89
1) [webkit] › tests/test-skip-logic.spec.ts:192:1 › test ─────────────────────────────────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(locator).toBeVisible() failed
Locator: getByText('Please answer the following questions')
Expected: visible
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 5000ms
- waiting for getByText('Please answer the following questions')
- waiting for" http://localhost:8080/test-skip-logic" navigation to finish...
- navigated to "http://localhost:8080/test-skip-logic"
87 | await page.locator('.studyBrowserMenuDropdown').click();
88 | await page.getByRole('menuitem', { name: 'Next Participant' }).click();
> 89 | await expect(page.getByText('Please answer the following questions')).toBeVisible();
| ^
90 | }
91 |
92 | async function goToCheck(page: Page, check: 'response' | 'responses' | 'attention-check-singular' | 'attention-check-block' | 'nested-responses' | 'nested-responses-block' | 'block-correct' | 'block-incorrect' | 'end') {
at getNextParticipant (/Users/runner/work/study/study/tests/test-skip-logic.spec.ts:89:73)
at /Users/runner/work/study/study/tests/test-skip-logic.spec.ts:242:3
|
|
[webkit] › tests/test-skip-logic.spec.ts:192:1 › test:
tests/test-skip-logic.spec.ts#L0
1) [webkit] › tests/test-skip-logic.spec.ts:192:1 › test ─────────────────────────────────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Test timeout of 180000ms exceeded.
|
|
[webkit] › tests/test-skip-logic.spec.ts:192:1 › test:
tests/test-skip-logic.spec.ts#L13
1) [webkit] › tests/test-skip-logic.spec.ts:192:1 › test ─────────────────────────────────────────
Error: expect(received).toBe(expected) // Object.is equality
Expected: true
Received: false
Call Log:
- Timeout 10000ms exceeded while waiting on the predicate
11 | async function selectRadioOption(page: Page, label: string, timeout = 10000) {
12 | const main = getStudyMain(page);
> 13 | await expect.poll(async () => {
| ^
14 | const radios = main.getByRole('radio', { name: label, exact: true });
15 | const count = await radios.count().catch(() => 0);
16 |
at selectRadioOption (/Users/runner/work/study/study/tests/test-skip-logic.spec.ts:13:3)
at answerTrial1 (/Users/runner/work/study/study/tests/test-skip-logic.spec.ts:37:3)
at goToCheck (/Users/runner/work/study/study/tests/test-skip-logic.spec.ts:142:3)
at /Users/runner/work/study/study/tests/test-skip-logic.spec.ts:200:3
|
|
🧪 chromium E2E Tests
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
🧪 webkit E2E Tests
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
🎭 Playwright Run Summary
1 flaky
[chromium] › tests/example-mvnv.spec.ts:174:1 › test ───────────────────────────────────────────
34 passed (6.7m)
|
|
🎭 Playwright Run Summary
1 failed
[webkit] › tests/test-skip-logic.spec.ts:192:1 › test ──────────────────────────────────────────
4 flaky
[webkit] › tests/demo-form-elements.spec.ts:52:1 › Test questionnaire component with responses and randomizing questions and responses
[webkit] › tests/example-cleveland.spec.ts:5:1 › Test example cleveland ────────────────────────
[webkit] › tests/replay-current-trial-dynamic.spec.ts:114:1 › preserves non-dynamic routes when navigating directly
[webkit] › tests/test-training-feedback.spec.ts:94:1 › test ────────────────────────────────────
1 skipped
29 passed (10.2m)
|