@@ -140,6 +140,8 @@ test('should locate sync assertions in source', async ({ runUITest }) => {
140140 } ) ;
141141
142142 await page . getByText ( 'trace test' ) . dblclick ( ) ;
143+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Passed' ) ;
144+
143145 await page . getByText ( 'Expect "toBe"' ) . click ( ) ;
144146
145147 await expect (
@@ -253,6 +255,8 @@ test('should show image diff', async ({ runUITest }) => {
253255 } ) ;
254256
255257 await page . getByText ( 'vrt test' ) . dblclick ( ) ;
258+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Failed' ) ;
259+
256260 await page . getByText ( / A t t a c h m e n t s / ) . click ( ) ;
257261 await expect ( page . getByText ( 'Diff' , { exact : true } ) ) . toBeVisible ( ) ;
258262 await expect ( page . getByText ( 'Actual' , { exact : true } ) ) . toBeVisible ( ) ;
@@ -369,6 +373,8 @@ test('should show errors with causes in the error tab', async ({ runUITest }) =>
369373 } ) ;
370374
371375 await page . getByText ( 'pass' ) . dblclick ( ) ;
376+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Failed' ) ;
377+
372378 await page . getByText ( 'Errors' , { exact : true } ) . click ( ) ;
373379 await expect ( page . locator ( '.tab-errors' ) ) . toContainText ( `Error: wrapper-message
374380[cause]: Error: outer-message
@@ -416,6 +422,8 @@ test('should show request source context id', async ({ runUITest, server }) => {
416422 } ) ;
417423
418424 await page . getByText ( 'pass' ) . dblclick ( ) ;
425+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Passed' ) ;
426+
419427 await page . getByText ( 'Network' , { exact : true } ) . click ( ) ;
420428 await expect ( page . locator ( 'span' ) . filter ( { hasText : 'Source' } ) ) . toBeVisible ( ) ;
421429 await expect ( page . getByText ( 'page#1' ) ) . toBeVisible ( ) ;
@@ -607,6 +615,8 @@ test('attachments tab shows all but top-level .push attachments', async ({ runUI
607615 } ) ;
608616
609617 await page . getByRole ( 'treeitem' , { name : 'attachment test' } ) . dblclick ( ) ;
618+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Passed' ) ;
619+
610620 const actionsTree = page . getByTestId ( 'actions-tree' ) ;
611621 await actionsTree . getByRole ( 'treeitem' , { name : 'step' } ) . click ( ) ;
612622 await page . keyboard . press ( 'ArrowRight' ) ;
@@ -641,6 +651,8 @@ test('skipped steps should have an indicator', async ({ runUITest }) => {
641651 } ) ;
642652
643653 await page . getByRole ( 'treeitem' , { name : 'test with steps' } ) . dblclick ( ) ;
654+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Passed' ) ;
655+
644656 const actionsTree = page . getByTestId ( 'actions-tree' ) ;
645657 await actionsTree . getByRole ( 'treeitem' , { name : 'outer' } ) . click ( ) ;
646658 await page . keyboard . press ( 'ArrowRight' ) ;
@@ -668,6 +680,7 @@ test('fails', async ({ page }) => {
668680 } ) ;
669681
670682 await page . getByText ( 'fails' ) . dblclick ( ) ;
683+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Failed' ) ;
671684
672685 await page . context ( ) . grantPermissions ( [ 'clipboard-read' , 'clipboard-write' ] ) ;
673686 await page . getByText ( 'Errors' , { exact : true } ) . click ( ) ;
@@ -685,13 +698,14 @@ test('fails', async ({ page }) => {
685698 ` . trim ( ) ) ;
686699} ) ;
687700
688- test ( 'should indicate current test status' , async ( { runUITest } ) => {
701+ test ( 'should indicate current test status' , async ( { runUITest, createLatch } ) => {
702+ const latch = createLatch ( ) ;
689703 const { page } = await runUITest ( {
690704 'a.spec.ts' : `
691705import { test, expect } from '@playwright/test';
692706test('basic pass', async ({ page }) => {
693707 await page.setContent('<button>Submit</button>');
694- await new Promise(resolve => setTimeout(resolve, 1000));
708+ ${ latch . blockingCode }
695709 expect(1).toBe(1);
696710});
697711test('basic fail', async ({ page }) => {
@@ -702,11 +716,12 @@ test('basic fail', async ({ page }) => {
702716 } ) ;
703717
704718 await page . getByTestId ( 'test-tree' ) . getByText ( 'basic pass' ) . dblclick ( ) ;
705- await expect ( page . getByRole ( 'tabpanel' , { name : 'Actions' } ) ) . toContainText ( 'Running' ) ;
706- await expect ( page . getByRole ( 'tabpanel' , { name : 'Actions' } ) ) . toContainText ( 'Passed' ) ;
719+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Running' ) ;
720+ latch . open ( ) ;
721+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Passed' ) ;
707722
708723 await page . getByTestId ( 'test-tree' ) . getByText ( 'basic fail' ) . dblclick ( ) ;
709- await expect ( page . getByRole ( 'tabpanel' , { name : 'Actions' } ) ) . toContainText ( 'Failed' ) ;
724+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Failed' ) ;
710725} ) ;
711726
712727test ( 'should be able to create and dispose APIRequestContext inside Promise.all' , async ( { runUITest } ) => {
@@ -728,6 +743,7 @@ test('should be able to create and dispose APIRequestContext inside Promise.all'
728743 } ) ;
729744
730745 await page . getByText ( 'create api request contexts' ) . dblclick ( ) ;
746+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Passed' ) ;
731747
732748 await expect ( page . getByTestId ( 'status-line' ) ) . toHaveText ( '1/1 passed (100%)' ) ;
733749
@@ -762,6 +778,7 @@ test('should partition action tree state by test', async ({ runUITest }) => {
762778
763779 await page . getByTitle ( 'Run all' ) . click ( ) ;
764780 await page . getByTestId ( 'test-tree' ) . getByText ( 'test1' ) . click ( ) ;
781+ await expect ( page . getByTestId ( 'workbench-run-status' ) ) . toContainText ( 'Passed' ) ;
765782
766783 const actionsTree = page . getByTestId ( 'actions-tree' ) ;
767784 await actionsTree . getByRole ( 'treeitem' , { name : 'After Hooks' } ) . click ( ) ;
0 commit comments