@@ -37,6 +37,39 @@ export const mockAtb = {
3737 version : 'v364-2' ,
3838} ;
3939
40+ const defaultRouteHandler = ( route ) => {
41+ const url = route . request ( ) . url ( ) ;
42+ if ( url . startsWith ( 'https://staticcdn.duckduckgo.com/' ) ) {
43+ return routeLocalResources ( route ) ;
44+ }
45+ if ( url . startsWith ( 'https://duckduckgo.com/atb.js' ) ) {
46+ // mock ATB endpoint
47+ const params = new URL ( url ) . searchParams ;
48+ if ( params . has ( 'atb' ) ) {
49+ const version = params . get ( 'atb' ) ;
50+ const [ majorVersion , minorVersion ] = version . slice ( 1 ) . split ( '-' ) ;
51+ if ( majorVersion < 360 && minorVersion > 1 ) {
52+ return route . fulfill ( {
53+ body : JSON . stringify ( {
54+ ...mockAtb ,
55+ updateVersion : `v${ majorVersion } -1` ,
56+ } ) ,
57+ } ) ;
58+ }
59+ }
60+ return route . fulfill ( {
61+ body : JSON . stringify ( mockAtb ) ,
62+ } ) ;
63+ }
64+ if ( url . startsWith ( 'https://duckduckgo.com/exti' ) || url . startsWith ( 'https://improving.duckduckgo.com/' ) ) {
65+ return route . fulfill ( {
66+ status : 200 ,
67+ body : '' ,
68+ } ) ;
69+ }
70+ route . continue ( ) ;
71+ } ;
72+
4073// based off example at https://playwright.dev/docs/chrome-extensions#testing
4174export const test = base . extend ( {
4275 /**
@@ -53,6 +86,12 @@ export const test = base.extend({
5386 channel : 'chromium' ,
5487 args : [ `--disable-extensions-except=${ pathToExtension } ` , `--load-extension=${ pathToExtension } ` ] ,
5588 } ) ;
89+
90+ if ( manifestVersion === 3 ) {
91+ // Serve extension background requests from local cache
92+ await context . route ( '**/*' , defaultRouteHandler ) ;
93+ }
94+
5695 // intercept extension install page and use HAR
5796 context . on ( 'page' , ( page ) => {
5897 // console.log('page', page.url())
@@ -71,40 +110,6 @@ export const test = base.extend({
71110 * @type {import('@playwright/test').Page | import('@playwright/test').Worker }
72111 */
73112 async backgroundPage ( { context, manifestVersion } , use ) {
74- // let background: Page | Worker
75- const routeHandler = ( route ) => {
76- const url = route . request ( ) . url ( ) ;
77- if ( url . startsWith ( 'https://staticcdn.duckduckgo.com/' ) ) {
78- return routeLocalResources ( route ) ;
79- }
80- if ( url . startsWith ( 'https://duckduckgo.com/atb.js' ) ) {
81- // mock ATB endpoint
82- const params = new URL ( url ) . searchParams ;
83- if ( params . has ( 'atb' ) ) {
84- const version = params . get ( 'atb' ) ;
85- const [ majorVersion , minorVersion ] = version . slice ( 1 ) . split ( '-' ) ;
86- if ( majorVersion < 360 && minorVersion > 1 ) {
87- return route . fulfill ( {
88- body : JSON . stringify ( {
89- ...mockAtb ,
90- updateVersion : `v${ majorVersion } -1` ,
91- } ) ,
92- } ) ;
93- }
94- }
95- return route . fulfill ( {
96- body : JSON . stringify ( mockAtb ) ,
97- } ) ;
98- }
99- if ( url . startsWith ( 'https://duckduckgo.com/exti' ) || url . startsWith ( 'https://improving.duckduckgo.com/' ) ) {
100- return route . fulfill ( {
101- status : 200 ,
102- body : '' ,
103- } ) ;
104- }
105- route . continue ( ) ;
106- } ;
107-
108113 if ( manifestVersion === 3 ) {
109114 // See https://playwright.dev/docs/service-workers
110115 const getBackgroundServiceWorker = async ( ) => {
@@ -154,8 +159,6 @@ export const test = base.extend({
154159 throw new Error ( "Failed to find extension's background ServiceWorker." ) ;
155160 }
156161
157- // Serve extension background requests from local cache
158- await context . route ( '**/*' , routeHandler ) ;
159162 await use ( background ) ;
160163 } else {
161164 let [ background ] = context . backgroundPages ( ) ;
@@ -164,7 +167,7 @@ export const test = base.extend({
164167 }
165168
166169 // Serve extension background requests from local cache
167- await background . route ( '**/*' , routeHandler ) ;
170+ await background . route ( '**/*' , defaultRouteHandler ) ;
168171 await use ( background ) ;
169172 }
170173 } ,
0 commit comments