Skip to content

fix: persist database results before saving charts #1151

fix: persist database results before saving charts

fix: persist database results before saving charts #1151

Triggered via push July 10, 2026 10:41
Status Failure
Total duration 11m 46s
Artifacts 1

test-e2e.yml

on: push
Playwright E2E tests
11m 41s
Playwright E2E tests
Fit to window
Zoom out
Zoom in

Annotations

10 errors, 1 warning, and 1 notice
[chromium] › tests/e2e/specs/onboarding.spec.ts:32:9 › Onboarding › Check the setup wizard: tests/e2e/specs/onboarding.spec.ts#L37
4) [chromium] › tests/e2e/specs/onboarding.spec.ts:32:9 › Onboarding › Check the setup wizard ──── Error: expect(locator).toBeVisible() failed Locator: getByLabel('Pie/Donut chart', { exact: true }) Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByLabel('Pie/Donut chart', { exact: true }) 35 | 36 | // Step 1 > 37 | await expect(page.getByLabel('Pie/Donut chart', { exact: true })).toBeVisible(); | ^ 38 | await page.getByLabel('Bar chart', { exact: true }).check(); 39 | await expect(page.getByLabel('Line chart', { exact: true })).toBeVisible(); 40 | await expect(page.getByLabel('Bar chart', { exact: true })).toBeVisible(); at /home/runner/work/visualizer/visualizer/tests/e2e/specs/onboarding.spec.ts:37:75
[chromium] › tests/e2e/specs/database-source.spec.js:59:2 › Database source › saves previewed one-time data when saving the chart: tests/e2e/specs/database-source.spec.js#L112
3) [chromium] › tests/e2e/specs/database-source.spec.js:59:2 › Database source › saves previewed one-time data when saving the chart Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.evaluate: Error: strict mode violation: locator('.CodeMirror') resolved to 2 elements: 1) <div translate="no" class="CodeMirror cm-s-default CodeMirror-wrap">…</div> aka locator('div').filter({ hasText: '/* List Posts published per.' }).nth(4) 2) <div translate="no" class="CodeMirror cm-s-default CodeMirror-wrap">…</div> aka locator('div').filter({ hasText: 'xxxxxxxxxx' }).nth(5) Call log: - waiting for locator('iframe').contentFrame().locator('.CodeMirror') 110 | await chartEditor 111 | .locator( '.CodeMirror' ) > 112 | .evaluate( | ^ 113 | ( editor, sql ) => editor.CodeMirror.setValue( sql ), 114 | query 115 | ); at /home/runner/work/visualizer/visualizer/tests/e2e/specs/database-source.spec.js:112:5
[chromium] › tests/e2e/specs/database-source.spec.js:59:2 › Database source › saves previewed one-time data when saving the chart: tests/e2e/specs/database-source.spec.js#L112
3) [chromium] › tests/e2e/specs/database-source.spec.js:59:2 › Database source › saves previewed one-time data when saving the chart Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.evaluate: Error: strict mode violation: locator('.CodeMirror') resolved to 2 elements: 1) <div translate="no" class="CodeMirror cm-s-default CodeMirror-wrap">…</div> aka locator('div').filter({ hasText: '/* List Posts published per.' }).nth(4) 2) <div translate="no" class="CodeMirror cm-s-default CodeMirror-wrap">…</div> aka locator('div').filter({ hasText: 'xxxxxxxxxx' }).nth(5) Call log: - waiting for locator('iframe').contentFrame().locator('.CodeMirror') 110 | await chartEditor 111 | .locator( '.CodeMirror' ) > 112 | .evaluate( | ^ 113 | ( editor, sql ) => editor.CodeMirror.setValue( sql ), 114 | query 115 | ); at /home/runner/work/visualizer/visualizer/tests/e2e/specs/database-source.spec.js:112:5
[chromium] › tests/e2e/specs/database-source.spec.js:59:2 › Database source › saves previewed one-time data when saving the chart: tests/e2e/specs/database-source.spec.js#L112
3) [chromium] › tests/e2e/specs/database-source.spec.js:59:2 › Database source › saves previewed one-time data when saving the chart Error: locator.evaluate: Error: strict mode violation: locator('.CodeMirror') resolved to 2 elements: 1) <div translate="no" class="CodeMirror cm-s-default CodeMirror-wrap">…</div> aka locator('div').filter({ hasText: '/* List Posts published per.' }).nth(4) 2) <div translate="no" class="CodeMirror cm-s-default CodeMirror-wrap">…</div> aka locator('div').filter({ hasText: 'xxxxxxxxxx' }).nth(5) Call log: - waiting for locator('iframe').contentFrame().locator('.CodeMirror') 110 | await chartEditor 111 | .locator( '.CodeMirror' ) > 112 | .evaluate( | ^ 113 | ( editor, sql ) => editor.CodeMirror.setValue( sql ), 114 | query 115 | ); at /home/runner/work/visualizer/visualizer/tests/e2e/specs/database-source.spec.js:112:5
[chromium] › tests/e2e/specs/admin.spec.js:234:5 › Support › check Chart selection: tests/e2e/specs/admin.spec.js#L236
2) [chromium] › tests/e2e/specs/admin.spec.js:234:5 › Support › check Chart selection ──────────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.click: Error: strict mode violation: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') resolved to 2 elements: 1) <a href="javascript:;" class="add-new-h2 add-new-chart">Add New Chart</a> aka locator('#wpbody-content').getByRole('link', { name: 'Add New Chart' }) 2) <a class="page-title-action" href="http://localhost:8889/wp-admin/options-general.php#visualizer_pro_license">License Settings</a> aka getByRole('link', { name: 'License Settings' }) Call log: - waiting for getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') 234 | test('check Chart selection', async ( { page, admin } ) => { 235 | await admin.visitAdminPage( 'admin.php?page=visualizer' ); > 236 | await page.getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link').click(); | ^ 237 | await expect( page.getByRole('button', { name: 'Classic Builder Step-by-step' }) ).toBeVisible({ timeout: 5000 }); 238 | await page.getByRole('button', { name: 'Classic Builder Step-by-step' }).click(); 239 | await expect(page.frameLocator('iframe').getByText('Select Library for charts')).toBeVisible(); at /home/runner/work/visualizer/visualizer/tests/e2e/specs/admin.spec.js:236:105
[chromium] › tests/e2e/specs/admin.spec.js:234:5 › Support › check Chart selection: tests/e2e/specs/admin.spec.js#L236
2) [chromium] › tests/e2e/specs/admin.spec.js:234:5 › Support › check Chart selection ──────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.click: Error: strict mode violation: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') resolved to 2 elements: 1) <a href="javascript:;" class="add-new-h2 add-new-chart">Add New Chart</a> aka locator('#wpbody-content').getByRole('link', { name: 'Add New Chart' }) 2) <a class="page-title-action" href="http://localhost:8889/wp-admin/options-general.php#visualizer_pro_license">License Settings</a> aka getByRole('link', { name: 'License Settings' }) Call log: - waiting for getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') 234 | test('check Chart selection', async ( { page, admin } ) => { 235 | await admin.visitAdminPage( 'admin.php?page=visualizer' ); > 236 | await page.getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link').click(); | ^ 237 | await expect( page.getByRole('button', { name: 'Classic Builder Step-by-step' }) ).toBeVisible({ timeout: 5000 }); 238 | await page.getByRole('button', { name: 'Classic Builder Step-by-step' }).click(); 239 | await expect(page.frameLocator('iframe').getByText('Select Library for charts')).toBeVisible(); at /home/runner/work/visualizer/visualizer/tests/e2e/specs/admin.spec.js:236:105
[chromium] › tests/e2e/specs/admin.spec.js:234:5 › Support › check Chart selection: tests/e2e/specs/admin.spec.js#L236
2) [chromium] › tests/e2e/specs/admin.spec.js:234:5 › Support › check Chart selection ──────────── Error: locator.click: Error: strict mode violation: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') resolved to 2 elements: 1) <a href="javascript:;" class="add-new-h2 add-new-chart">Add New Chart</a> aka locator('#wpbody-content').getByRole('link', { name: 'Add New Chart' }) 2) <a class="page-title-action" href="http://localhost:8889/wp-admin/options-general.php#visualizer_pro_license">License Settings</a> aka getByRole('link', { name: 'License Settings' }) Call log: - waiting for getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') 234 | test('check Chart selection', async ( { page, admin } ) => { 235 | await admin.visitAdminPage( 'admin.php?page=visualizer' ); > 236 | await page.getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link').click(); | ^ 237 | await expect( page.getByRole('button', { name: 'Classic Builder Step-by-step' }) ).toBeVisible({ timeout: 5000 }); 238 | await page.getByRole('button', { name: 'Classic Builder Step-by-step' }).click(); 239 | await expect(page.frameLocator('iframe').getByText('Select Library for charts')).toBeVisible(); at /home/runner/work/visualizer/visualizer/tests/e2e/specs/admin.spec.js:236:105
[chromium] › tests/e2e/specs/admin.spec.js:19:5 › Chart Library › check Add New button: tests/e2e/specs/admin.spec.js#L20
1) [chromium] › tests/e2e/specs/admin.spec.js:19:5 › Chart Library › check Add New button ──────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') Expected: visible Error: strict mode violation: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') resolved to 2 elements: 1) <a href="javascript:;" class="add-new-h2 add-new-chart">Add New Chart</a> aka getByRole('link', { name: 'Add New Chart' }).nth(1) 2) <a class="page-title-action" href="http://localhost:8889/wp-admin/options-general.php#visualizer_pro_license">License Settings</a> aka getByRole('link', { name: 'License Settings' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') 18 | 19 | test( 'check Add New button', async ( { page} ) => { > 20 | await expect(page.getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link')).toBeVisible(); | ^ 21 | } ); 22 | 23 | test( 'check filters options', async ( { page } ) => { at /home/runner/work/visualizer/visualizer/tests/e2e/specs/admin.spec.js:20:113
[chromium] › tests/e2e/specs/admin.spec.js:19:5 › Chart Library › check Add New button: tests/e2e/specs/admin.spec.js#L20
1) [chromium] › tests/e2e/specs/admin.spec.js:19:5 › Chart Library › check Add New button ──────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') Expected: visible Error: strict mode violation: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') resolved to 2 elements: 1) <a href="javascript:;" class="add-new-h2 add-new-chart">Add New Chart</a> aka getByRole('link', { name: 'Add New Chart' }).nth(1) 2) <a class="page-title-action" href="http://localhost:8889/wp-admin/options-general.php#visualizer_pro_license">License Settings</a> aka getByRole('link', { name: 'License Settings' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') 18 | 19 | test( 'check Add New button', async ( { page} ) => { > 20 | await expect(page.getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link')).toBeVisible(); | ^ 21 | } ); 22 | 23 | test( 'check filters options', async ( { page } ) => { at /home/runner/work/visualizer/visualizer/tests/e2e/specs/admin.spec.js:20:113
[chromium] › tests/e2e/specs/admin.spec.js:19:5 › Chart Library › check Add New button: tests/e2e/specs/admin.spec.js#L20
1) [chromium] › tests/e2e/specs/admin.spec.js:19:5 › Chart Library › check Add New button ──────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') Expected: visible Error: strict mode violation: getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') resolved to 2 elements: 1) <a href="javascript:;" class="add-new-h2 add-new-chart">Add New Chart</a> aka getByRole('link', { name: 'Add New Chart' }).nth(1) 2) <a class="page-title-action" href="http://localhost:8889/wp-admin/options-general.php#visualizer_pro_license">License Settings</a> aka getByRole('link', { name: 'License Settings' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link') 18 | 19 | test( 'check Add New button', async ( { page} ) => { > 20 | await expect(page.getByRole('heading', { name: 'Visualizer Library Add New Chart' }).getByRole('link')).toBeVisible(); | ^ 21 | } ); 22 | 23 | test( 'check filters options', async ( { page } ) => { at /home/runner/work/visualizer/visualizer/tests/e2e/specs/admin.spec.js:20:113
Playwright 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/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
6 failed [chromium] › tests/e2e/specs/admin.spec.js:19:5 › Chart Library › check Add New button ───────── [chromium] › tests/e2e/specs/admin.spec.js:234:5 › Support › check Chart selection ───────────── [chromium] › tests/e2e/specs/database-source.spec.js:59:2 › Database source › saves previewed one-time data when saving the chart [chromium] › tests/e2e/specs/onboarding.spec.ts:32:9 › Onboarding › Check the setup wizard ───── [chromium] › tests/e2e/specs/upsell.spec.js:38:2 › Upsell › chart settings on admin ──────────── [chromium] › tests/e2e/specs/upsell.spec.js:114:2 › Upsell › pro chart license lock ──────────── 39 passed (7.2m)

Artifacts

Produced during runtime
Name Size Digest
e2e-playwright-results Expired
30.6 MB
sha256:178dfb13db01e0bac62c500e20217a1ee1edc66e386ca122798eb221ab1e2082