@@ -2,6 +2,7 @@ import { expect } from '@playwright/test'
22import type { Page } from '@playwright/test'
33
44const webServerMode = process . env . PLAYWRIGHT_WEB_SERVER_MODE ?? 'dev'
5+ const pagesWithStubbedExternalFonts = new WeakSet < Page > ( )
56
67export const appEntryPath =
78 webServerMode === 'preview' ? '/index.html' : '/src/index.html'
@@ -71,7 +72,34 @@ const navigateToApp = async (page: Page, path: string) => {
7172 }
7273}
7374
75+ const stubExternalFontRequests = async ( page : Page ) => {
76+ if ( pagesWithStubbedExternalFonts . has ( page ) ) {
77+ return
78+ }
79+
80+ pagesWithStubbedExternalFonts . add ( page )
81+
82+ await page . route ( 'https://fonts.googleapis.com/**' , async route => {
83+ await route . fulfill ( {
84+ status : 200 ,
85+ contentType : 'text/css; charset=utf-8' ,
86+ body : '' ,
87+ headers : {
88+ 'cache-control' : 'public, max-age=31536000, immutable' ,
89+ } ,
90+ } )
91+ } )
92+
93+ await page . route ( 'https://fonts.gstatic.com/**' , async route => {
94+ await route . fulfill ( {
95+ status : 204 ,
96+ body : '' ,
97+ } )
98+ } )
99+ }
100+
74101export const waitForAppReady = async ( page : Page , path = appEntryPath ) => {
102+ await stubExternalFontRequests ( page )
75103 await navigateToApp ( page , path )
76104 await expect ( page . getByRole ( 'heading' , { name : '@knighted/develop' } ) ) . toBeVisible ( )
77105 await expect
@@ -483,8 +511,12 @@ export const connectByotWithSingleRepo = async (
483511 page : Page ,
484512 {
485513 branchesByRepo,
514+ autoOpenWorkspace = true ,
515+ assertPrRepositorySelected = true ,
486516 } : {
487517 branchesByRepo ?: BranchesByRepo
518+ autoOpenWorkspace ?: boolean
519+ assertPrRepositorySelected ?: boolean
488520 } = { } ,
489521) => {
490522 await page . route ( 'https://api.github.com/user/repos**' , async route => {
@@ -525,33 +557,37 @@ export const connectByotWithSingleRepo = async (
525557 await workspacesRepositoryFilter . selectOption ( 'knightedcodemonkey/develop' )
526558 await expect ( workspacesRepositoryFilter ) . toHaveValue ( 'knightedcodemonkey/develop' )
527559
528- const initializeButton = page . getByRole ( 'button' , {
529- name : 'Initialize' ,
530- exact : true ,
531- } )
560+ if ( autoOpenWorkspace ) {
561+ const initializeButton = page . getByRole ( 'button' , {
562+ name : 'Initialize' ,
563+ exact : true ,
564+ } )
532565
533- if ( await initializeButton . isVisible ( ) ) {
534- await initializeButton . click ( )
535- } else {
536- const storedWorkspace = page . getByLabel ( 'Stored workspace' )
537- if ( await storedWorkspace . isVisible ( ) ) {
538- const workspaceValue = await storedWorkspace
539- . locator ( 'option:not([value=""])' )
540- . first ( )
541- . getAttribute ( 'value' )
542-
543- if ( workspaceValue ) {
544- await storedWorkspace . selectOption ( workspaceValue )
545- await page . getByRole ( 'button' , { name : 'Open' , exact : true } ) . click ( )
566+ if ( await initializeButton . isVisible ( ) ) {
567+ await initializeButton . click ( )
568+ } else {
569+ const storedWorkspace = page . getByLabel ( 'Stored workspace' )
570+ if ( await storedWorkspace . isVisible ( ) ) {
571+ const workspaceValue = await storedWorkspace
572+ . locator ( 'option:not([value=""])' )
573+ . first ( )
574+ . getAttribute ( 'value' )
575+
576+ if ( workspaceValue ) {
577+ await storedWorkspace . selectOption ( workspaceValue )
578+ await page . getByRole ( 'button' , { name : 'Open' , exact : true } ) . click ( )
579+ }
546580 }
547581 }
548582 }
549583
550584 await ensureWorkspacesDrawerClosed ( page )
551585
552- const repoSelect = page . getByLabel ( 'Pull request repository' )
553- await expect ( repoSelect ) . toHaveValue ( 'knightedcodemonkey/develop' )
554- await expect ( repoSelect ) . toBeDisabled ( )
586+ if ( assertPrRepositorySelected ) {
587+ const repoSelect = page . getByLabel ( 'Pull request repository' )
588+ await expect ( repoSelect ) . toHaveValue ( 'knightedcodemonkey/develop' )
589+ await expect ( repoSelect ) . toBeDisabled ( )
590+ }
555591
556592 await expect (
557593 page . getByRole ( 'button' , {
0 commit comments