@@ -2129,3 +2129,42 @@ test('should not navigate on anchor clicks', async ({ runAndTrace, page, server
21292129 await checkLink ( 'link2' ) ;
21302130 await checkLink ( 'link3' ) ;
21312131} ) ;
2132+
2133+ test ( 'should respect CSSOM changes' , async ( { runAndTrace, page, server } ) => {
2134+ const traceViewer = await runAndTrace ( async ( ) => {
2135+ await page . setContent ( '<style>button { color: red; }</style><button>Hello</button>' ) ;
2136+ await page . evaluate ( ( ) => { ( document . styleSheets [ 0 ] . cssRules [ 0 ] as any ) . style . color = 'blue' ; } ) ;
2137+
2138+ await page . setContent ( '<style>@media { button { color: red; } }</style><button>Hello</button>' ) ;
2139+ await page . evaluate ( ( ) => {
2140+ window [ 'rule' ] = document . styleSheets [ 0 ] . cssRules [ 0 ] ;
2141+ void 0 ;
2142+ } ) ;
2143+ await page . evaluate ( ( ) => { window [ 'rule' ] . cssRules [ 0 ] . style . color = 'black' ; } ) ;
2144+ await page . evaluate ( ( ) => { window [ 'rule' ] . insertRule ( 'button:not(.disabled) { color: green; }' , 1 ) ; } ) ;
2145+
2146+ await page . route ( '**/style.css' , route => {
2147+ route . fulfill ( { body : 'button { color: red; }' , } ) . catch ( ( ) => { } ) ;
2148+ } ) ;
2149+ await page . goto ( server . EMPTY_PAGE ) ;
2150+ await page . setContent ( '<link rel="stylesheet" href="style.css"><button>Hello</button>' ) ;
2151+ await page . evaluate ( ( ) => { ( document . styleSheets [ 0 ] . cssRules [ 0 ] as any ) . style . color = 'blue' ; } ) ;
2152+ } ) ;
2153+
2154+ const frame1 = await traceViewer . snapshotFrame ( 'Set content' , 0 ) ;
2155+ await expect ( frame1 . locator ( 'button' ) ) . toHaveCSS ( 'color' , 'rgb(255, 0, 0)' ) ;
2156+ const frame2 = await traceViewer . snapshotFrame ( 'Evaluate' , 0 ) ;
2157+ await expect ( frame2 . locator ( 'button' ) ) . toHaveCSS ( 'color' , 'rgb(0, 0, 255)' ) ;
2158+
2159+ const frame3 = await traceViewer . snapshotFrame ( 'Set content' , 1 ) ;
2160+ await expect ( frame3 . locator ( 'button' ) ) . toHaveCSS ( 'color' , 'rgb(255, 0, 0)' ) ;
2161+ const frame4 = await traceViewer . snapshotFrame ( 'Evaluate' , 2 ) ;
2162+ await expect ( frame4 . locator ( 'button' ) ) . toHaveCSS ( 'color' , 'rgb(0, 0, 0)' ) ;
2163+ const frame5 = await traceViewer . snapshotFrame ( 'Evaluate' , 3 ) ;
2164+ await expect ( frame5 . locator ( 'button' ) ) . toHaveCSS ( 'color' , 'rgb(0, 128, 0)' ) ;
2165+
2166+ const frame6 = await traceViewer . snapshotFrame ( 'Set content' , 2 ) ;
2167+ await expect ( frame6 . locator ( 'button' ) ) . toHaveCSS ( 'color' , 'rgb(255, 0, 0)' ) ;
2168+ const frame7 = await traceViewer . snapshotFrame ( 'Evaluate' , 4 ) ;
2169+ await expect ( frame7 . locator ( 'button' ) ) . toHaveCSS ( 'color' , 'rgb(0, 0, 255)' ) ;
2170+ } ) ;
0 commit comments