11import { describe , expect , it } from "vitest" ;
2- import type { BuildContext , BuildLayer } from "@trigger.dev/core/v3/build" ;
3- import { playwright } from "./playwright.js" ;
2+ import { dryRunHeaderPattern } from "./playwright.js" ;
43
54// Real `playwright install --dry-run` headers, before and after the 1.58 format change.
65const HEADERS = {
@@ -19,52 +18,18 @@ const HEADERS = {
1918 } ,
2019} as const ;
2120
22- type BrowserKey = keyof ( typeof HEADERS ) [ "1.57" ] ;
23-
24- function generatedInstructions ( options : Parameters < typeof playwright > [ 0 ] ) : string [ ] {
25- let captured : BuildLayer | undefined ;
26-
27- const context = {
28- target : "deploy" ,
29- logger : { debug : ( ) => { } } ,
30- addLayer : ( layer : BuildLayer ) => {
31- captured = layer ;
32- } ,
33- } as unknown as BuildContext ;
34-
35- const manifest = {
36- externals : [ { name : "playwright" , version : "1.62.0" } ] ,
37- } as any ;
38-
39- playwright ( options ) . onBuildComplete ! ( context , manifest ) ;
40-
41- return captured ?. image ?. instructions ?? [ ] ;
42- }
43-
44- /** The ERE the generated `grep -E "<pattern>"` step selects a browser's block with. */
45- function headerPattern ( instructions : string [ ] , browser : BrowserKey ) : RegExp {
46- const step = instructions . find ( ( line ) => line . endsWith ( `> /tmp/${ browser } -info.txt` ) ) ;
47- const match = step ?. match ( / g r e p [ ^ " ] * " ( .+ ) " \/ t m p \/ b r o w s e r - i n f o \. t x t / ) ;
48- if ( ! match ?. [ 1 ] ) throw new Error ( `no header grep generated for ${ browser } ` ) ;
49- return new RegExp ( match [ 1 ] ) ;
50- }
51-
52- describe ( "playwright extension dry-run header parsing" , ( ) => {
53- const instructions = generatedInstructions ( {
54- browsers : [ "chromium" , "firefox" , "webkit" ] ,
55- headless : false ,
56- } ) ;
57- const browsers = Object . keys ( HEADERS [ "1.57" ] ) as BrowserKey [ ] ;
21+ const browsers = Object . keys ( HEADERS [ "1.57" ] ) as Array < keyof ( typeof HEADERS ) [ "1.57" ] > ;
5822
23+ describe ( "playwright extension dry-run header pattern" , ( ) => {
5924 it . each ( browsers ) ( "selects the %s block in both output formats" , ( browser ) => {
60- const pattern = headerPattern ( instructions , browser ) ;
25+ const pattern = new RegExp ( dryRunHeaderPattern ( browser ) ) ;
6126
6227 expect ( pattern . test ( HEADERS [ "1.57" ] [ browser ] ) ) . toBe ( true ) ;
6328 expect ( pattern . test ( HEADERS [ "1.62" ] [ browser ] ) ) . toBe ( true ) ;
6429 } ) ;
6530
6631 it . each ( browsers ) ( "does not select another browser's block for %s" , ( browser ) => {
67- const pattern = headerPattern ( instructions , browser ) ;
32+ const pattern = new RegExp ( dryRunHeaderPattern ( browser ) ) ;
6833
6934 for ( const other of browsers . filter ( ( b ) => b !== browser ) ) {
7035 expect ( pattern . test ( HEADERS [ "1.57" ] [ other ] ) ) . toBe ( false ) ;
0 commit comments