@@ -9,20 +9,24 @@ import { start_server, test } from '../../../utils.js';
99/** @typedef {import('@playwright/test').Response } Response */
1010
1111test . describe . parallel ( 'a11y' , ( ) => {
12- test ( 'resets focus' , async ( { page, clicknav } ) => {
12+ test ( 'resets focus' , async ( { page, clicknav, browserName } ) => {
13+ const tab = browserName === 'webkit' ? 'Alt+Tab' : 'Tab' ;
14+
1315 await page . goto ( '/accessibility/a' ) ;
1416
1517 await clicknav ( '[href="/accessibility/b"]' ) ;
1618 expect ( await page . innerHTML ( 'h1' ) ) . toBe ( 'b' ) ;
1719 expect ( await page . evaluate ( ( ) => ( document . activeElement || { } ) . nodeName ) ) . toBe ( 'BODY' ) ;
18- await page . keyboard . press ( 'Tab' ) ;
20+ await page . keyboard . press ( tab ) ;
21+
1922 expect ( await page . evaluate ( ( ) => ( document . activeElement || { } ) . nodeName ) ) . toBe ( 'A' ) ;
2023 expect ( await page . evaluate ( ( ) => ( document . activeElement || { } ) . textContent ) ) . toBe ( 'a' ) ;
2124
2225 await clicknav ( '[href="/accessibility/a"]' ) ;
2326 expect ( await page . innerHTML ( 'h1' ) ) . toBe ( 'a' ) ;
2427 expect ( await page . evaluate ( ( ) => ( document . activeElement || { } ) . nodeName ) ) . toBe ( 'BODY' ) ;
25- await page . keyboard . press ( 'Tab' ) ;
28+
29+ await page . keyboard . press ( tab ) ;
2630 expect ( await page . evaluate ( ( ) => ( document . activeElement || { } ) . nodeName ) ) . toBe ( 'A' ) ;
2731 expect ( await page . evaluate ( ( ) => ( document . activeElement || { } ) . textContent ) ) . toBe ( 'a' ) ;
2832
@@ -127,11 +131,12 @@ test.describe.parallel('beforeNavigate', () => {
127131
128132 test ( 'prevents navigation triggered by back button' , async ( { page, app, baseURL } ) => {
129133 await page . goto ( '/before-navigate/a' ) ;
130-
131134 await app . goto ( '/before-navigate/prevent-navigation' ) ;
135+ await page . click ( 'h1' ) ; // The browsers block attempts to prevent navigation on a frame that's never had a user gesture.
136+
132137 await page . goBack ( ) ;
133- expect ( page . url ( ) ) . toBe ( baseURL + '/before-navigate/prevent-navigation' ) ;
134138 expect ( await page . innerHTML ( 'pre' ) ) . toBe ( 'true' ) ;
139+ expect ( page . url ( ) ) . toBe ( baseURL + '/before-navigate/prevent-navigation' ) ;
135140 } ) ;
136141
137142 test ( 'prevents unload' , async ( { page } ) => {
@@ -945,7 +950,7 @@ test.describe.parallel('Errors', () => {
945950 const body = await page . textContent ( 'body' ) ;
946951
947952 expect ( body ) . toMatch (
948- 'Error: "error" property returned from load() must be a string or instance of Error, received type "object"'
953+ '"error" property returned from load() must be a string or instance of Error, received type "object"'
949954 ) ;
950955 }
951956 } ) ;
@@ -1389,7 +1394,8 @@ test.describe.parallel('Load', () => {
13891394 baseURL,
13901395 page,
13911396 clicknav,
1392- javaScriptEnabled
1397+ javaScriptEnabled,
1398+ browserName
13931399 } ) => {
13941400 await page . goto ( '/load' ) ;
13951401 await clicknav ( '[href="/load/fetch-headers"]' ) ;
@@ -1403,8 +1409,11 @@ test.describe.parallel('Load', () => {
14031409 referer : `${ baseURL } /load` ,
14041410 // these headers aren't particularly useful, but they allow us to verify
14051411 // that page headers are being forwarded
1406- 'sec-fetch-dest' : javaScriptEnabled ? 'empty' : 'document' ,
1407- 'sec-fetch-mode' : javaScriptEnabled ? 'cors' : 'navigate'
1412+ 'sec-fetch-dest' :
1413+ browserName === 'webkit' ? undefined : javaScriptEnabled ? 'empty' : 'document' ,
1414+ 'sec-fetch-mode' :
1415+ browserName === 'webkit' ? undefined : javaScriptEnabled ? 'cors' : 'navigate' ,
1416+ connection : 'keep-alive'
14081417 } ) ;
14091418 } ) ;
14101419
@@ -1717,6 +1726,7 @@ test.describe.parallel('$app/stores', () => {
17171726 clicknav,
17181727 javaScriptEnabled
17191728 } ) => {
1729+ await page . goto ( '/store/stuff/foo?reset=true' ) ;
17201730 const stuff1 = JSON . stringify ( { name : 'SvelteKit' , value : 789 , error : 'uh oh' } ) ;
17211731 const stuff2 = JSON . stringify ( { name : 'SvelteKit' , value : 123 , foo : true } ) ;
17221732 await page . goto ( '/store/stuff/www' ) ;
@@ -1829,7 +1839,7 @@ test.describe.parallel('Redirects', () => {
18291839 expect ( page . url ( ) ) . toBe ( `${ baseURL } /redirect` ) ;
18301840 } ) ;
18311841
1832- test ( 'prevents redirect loops' , async ( { baseURL, page, javaScriptEnabled } ) => {
1842+ test ( 'prevents redirect loops' , async ( { baseURL, page, javaScriptEnabled, browserName } ) => {
18331843 await page . goto ( '/redirect' ) ;
18341844
18351845 await page . click ( '[href="/redirect/loopy/a"]' ) ;
@@ -1843,7 +1853,11 @@ test.describe.parallel('Redirects', () => {
18431853 ) ;
18441854 } else {
18451855 // there's not a lot we can do to handle server-side redirect loops
1846- expect ( page . url ( ) ) . toBe ( 'chrome-error://chromewebdata/' ) ;
1856+ if ( browserName === 'webkit' ) {
1857+ expect ( page . url ( ) ) . toBe ( `${ baseURL } /redirect` ) ;
1858+ } else {
1859+ expect ( page . url ( ) ) . toBe ( 'chrome-error://chromewebdata/' ) ;
1860+ }
18471861 }
18481862 } ) ;
18491863
@@ -2124,20 +2138,20 @@ test.describe.parallel('Routing', () => {
21242138 expect ( await page . textContent ( 'h1' ) ) . toBe ( 'a' ) ;
21252139 } ) ;
21262140
2127- test ( 'focus works if page load has hash' , async ( { page } ) => {
2141+ test ( 'focus works if page load has hash' , async ( { page, browserName } ) => {
21282142 await page . goto ( '/routing/hashes/target#p2' ) ;
21292143
2130- await page . keyboard . press ( 'Tab' ) ;
2144+ await page . keyboard . press ( browserName === 'webkit' ? 'Alt+Tab' : 'Tab' ) ;
21312145 expect ( await page . evaluate ( ( ) => ( document . activeElement || { } ) . textContent ) ) . toBe (
21322146 'next focus element'
21332147 ) ;
21342148 } ) ;
21352149
2136- test ( 'focus works when navigating to a hash on the same page' , async ( { page } ) => {
2150+ test ( 'focus works when navigating to a hash on the same page' , async ( { page, browserName } ) => {
21372151 await page . goto ( '/routing/hashes/target' ) ;
21382152
21392153 await page . click ( '[href="#p2"]' ) ;
2140- await page . keyboard . press ( 'Tab' ) ;
2154+ await page . keyboard . press ( browserName === 'webkit' ? 'Alt+Tab' : 'Tab' ) ;
21412155
21422156 expect ( await page . evaluate ( ( ) => ( document . activeElement || { } ) . textContent ) ) . toBe (
21432157 'next focus element'
0 commit comments