@@ -436,6 +436,30 @@ test.describe("redirects", () => {
436436 await customProxy . goBack ( ) ;
437437 } ) ;
438438
439+ test ( "on client navigation, redirect to external url" , async ( { page } ) => {
440+ const externalUrl = "http://localhost:5555/cors-test" ;
441+ ensureAllNetworkSucceeds ( page ) ;
442+ const customProxy = new CustomProxyPage ( page , {
443+ title : "first page" ,
444+ links : [
445+ {
446+ redirectTo : {
447+ url : externalUrl ,
448+ title : "external" ,
449+ } ,
450+ } ,
451+ ] ,
452+ } ) ;
453+ await customProxy . goto ( ) ;
454+ await customProxy . clickLink ( "external" , {
455+ browserReload : true ,
456+ waitFor : 0 ,
457+ } ) ;
458+
459+ // back button works as expected
460+ await customProxy . goBack ( ) ;
461+ } ) ;
462+
439463 test ( "sets cookies along the way" , async ( { page, context, baseURL } ) => {
440464 ensureAllNetworkSucceeds ( page ) ;
441465 const customProxy = new CustomProxyPage ( page , {
@@ -1042,12 +1066,15 @@ test.describe("back button restoration", () => {
10421066 await customProxy . goto ( ) ;
10431067 const edit = page . getByRole ( "link" ) . first ( ) ;
10441068
1045- await page . evaluate ( ( rRoot : any ) => {
1046- rRoot . appendChild ( document . createTextNode ( "edit1" ) ) ;
1047- document . addEventListener ( "turbolinks:before-cache" , ( ) => {
1048- rRoot . appendChild ( document . createTextNode ( "edit2" ) ) ;
1049- } ) ;
1050- } , await edit . elementHandle ( ) ) ;
1069+ await page . evaluate (
1070+ ( rRoot : any ) => {
1071+ rRoot . appendChild ( document . createTextNode ( "edit1" ) ) ;
1072+ document . addEventListener ( "turbolinks:before-cache" , ( ) => {
1073+ rRoot . appendChild ( document . createTextNode ( "edit2" ) ) ;
1074+ } ) ;
1075+ } ,
1076+ await edit . elementHandle ( )
1077+ ) ;
10511078 await expect ( edit ) . toContainText ( "edit1" ) ;
10521079 await expect ( edit ) . not . toContainText ( "edit2" ) ;
10531080
@@ -1065,12 +1092,15 @@ test.describe("back button restoration", () => {
10651092 await page . goto ( "./vite-page" ) ;
10661093 await waitForTurbolinksInit ( page ) ;
10671094 const edit = page . getByRole ( "link" ) . first ( ) ;
1068- await page . evaluate ( ( rRoot : any ) => {
1069- rRoot . appendChild ( document . createTextNode ( "edit1" ) ) ;
1070- document . addEventListener ( "turbolinks:before-cache" , ( ) => {
1071- rRoot . appendChild ( document . createTextNode ( "edit2" ) ) ;
1072- } ) ;
1073- } , await edit . elementHandle ( ) ) ;
1095+ await page . evaluate (
1096+ ( rRoot : any ) => {
1097+ rRoot . appendChild ( document . createTextNode ( "edit1" ) ) ;
1098+ document . addEventListener ( "turbolinks:before-cache" , ( ) => {
1099+ rRoot . appendChild ( document . createTextNode ( "edit2" ) ) ;
1100+ } ) ;
1101+ } ,
1102+ await edit . elementHandle ( )
1103+ ) ;
10741104
10751105 await expect ( edit ) . toContainText ( "edit1" ) ;
10761106 await expect ( edit ) . not . toContainText ( "edit2" ) ;
0 commit comments