@@ -45,20 +45,40 @@ export async function captureScreenshotOnError(app: Application, logsPath: strin
4545 */
4646export async function copyUserSettings ( userDir : string ) : Promise < string > {
4747 const settingsFileName = 'settings.json' ;
48+ const fixturesDir = path . join ( ROOT_PATH , 'test/e2e/fixtures' ) ;
49+ const settingsFile = path . join ( fixturesDir , settingsFileName ) ;
4850
49- if ( fs . existsSync ( '/.dockerenv' ) ) {
50- const fixturesDir = path . join ( ROOT_PATH , 'test/e2e/fixtures' ) ;
51- const settingsFile = path . join ( fixturesDir , 'settings.json' ) ;
51+ // Start from the current settings.json in fixtures
52+ let mergedSettings = JSON . parse ( fs . readFileSync ( settingsFile , 'utf8' ) ) ;
5253
53- const mergedSettings = {
54- ...JSON . parse ( fs . readFileSync ( settingsFile , 'utf8' ) ) ,
55- ...JSON . parse ( fs . readFileSync ( path . join ( fixturesDir , 'settingsDocker.json' ) , 'utf8' ) ) ,
56- } ;
54+ // 1. Merge Docker-specific overrides when running in Docker
55+ if ( fs . existsSync ( '/.dockerenv' ) ) {
56+ const dockerSettingsFile = path . join ( fixturesDir , 'settingsDocker.json' ) ;
57+ if ( fs . existsSync ( dockerSettingsFile ) ) {
58+ const dockerSettings = JSON . parse ( fs . readFileSync ( dockerSettingsFile , 'utf8' ) ) ;
59+ mergedSettings = {
60+ ...mergedSettings ,
61+ ...dockerSettings ,
62+ } ;
63+ }
64+ }
5765
58- // Overwrite file
59- fs . writeFileSync ( settingsFile , JSON . stringify ( mergedSettings , null , 2 ) ) ;
66+ // 2. Merge skip-pyrefly settings if ALLOW_PYREFLY is not explicitly 'true'
67+ if ( process . env . ALLOW_PYREFLY !== 'true' ) {
68+ const skipPyreflyFile = path . join ( fixturesDir , 'settingsSkipPyrefly.json' ) ;
69+ if ( fs . existsSync ( skipPyreflyFile ) ) {
70+ const skipPyreflySettings = JSON . parse ( fs . readFileSync ( skipPyreflyFile , 'utf8' ) ) ;
71+ mergedSettings = {
72+ ...mergedSettings ,
73+ ...skipPyreflySettings ,
74+ } ;
75+ }
6076 }
6177
78+ // Overwrite fixtures/settings.json with the merged result
79+ fs . writeFileSync ( settingsFile , JSON . stringify ( mergedSettings , null , 2 ) ) ;
80+
81+ // Let existing helper copy settings.json into the user dir
6282 await copyFixtureFile ( settingsFileName , userDir ) ;
6383 return userDir ;
6484}
0 commit comments