From f7210a05727780e58806d3f9008516c1a8979ae7 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Tue, 8 Nov 2022 00:35:14 -0800 Subject: [PATCH] fixup! test: run legacy-cli e2e tests via bazel --- tests/legacy-cli/e2e/utils/project.ts | 135 ++++++++++++-------------- 1 file changed, 63 insertions(+), 72 deletions(-) diff --git a/tests/legacy-cli/e2e/utils/project.ts b/tests/legacy-cli/e2e/utils/project.ts index 3810a3da2246..791bb3e07f6a 100644 --- a/tests/legacy-cli/e2e/utils/project.ts +++ b/tests/legacy-cli/e2e/utils/project.ts @@ -187,6 +187,45 @@ export function useCIDefaults(projectName = 'test-project'): Promise { }); } +const KARMA_CONF_DEFAULT = ` + module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: {}, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/$PROJECT_NAME$'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); + }; +`; + export async function useCIChrome(projectName: string, projectDir = ''): Promise { const protractorConf = path.join(projectDir, 'protractor.conf.js'); if (fs.existsSync(protractorConf)) { @@ -207,80 +246,32 @@ export async function useCIChrome(projectName: string, projectDir = ''): Promise } const karmaConf = path.join(projectDir, 'karma.conf.js'); - // Modify existing karma config - if (fs.existsSync(karmaConf)) { - await replaceInFile( - karmaConf, - /browsers:.*\]\s*,/, - ` - browsers: ['ChromeHeadlessNoSandbox'], - customLaunchers: { - ChromeHeadlessNoSandbox: { - base: 'ChromeHeadless', - flags: [ - '--no-sandbox', - '--headless', - '--disable-gpu', - '--disable-dev-shm-usage', - ], - } - }, - `, - ); - // Otherwise need to create new standalone config to ensure ChromeHeadlessNoSandbox is used - } else { - await writeFile( - karmaConf, - ` - const path = require('path'); - module.exports = function(config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma'), - ], - client: { - clearContext: false, // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: path.join(__dirname, './coverage'), - subdir: '.', - reporters: [ - {type: 'lcov'}, - ], - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['ChromeHeadlessNoSandbox'], - customLaunchers: { - ChromeHeadlessNoSandbox: { - base: 'ChromeHeadless', - flags: [ - '--no-sandbox', - '--headless', - '--disable-gpu', - '--disable-dev-shm-usage', - ], - } - }, - singleRun: false, - }); - }; - `, - ); + + // Create one with default config if it doesn't exist + if (!fs.existsSync(karmaConf)) { + await writeFile(karmaConf, KARMA_CONF_DEFAULT.replace('$PROJECT_NAME$', projectName)); } + // Update to use the headless sandboxed chrome + await replaceInFile( + karmaConf, + /browsers:.*\]\s*,/, + ` + browsers: ['ChromeHeadlessNoSandbox'], + customLaunchers: { + ChromeHeadlessNoSandbox: { + base: 'ChromeHeadless', + flags: [ + '--no-sandbox', + '--headless', + '--disable-gpu', + '--disable-dev-shm-usage', + ], + } + }, + `, + ); + return updateJsonFile('angular.json', (workspaceJson) => { const project = workspaceJson.projects[projectName]; const appTargets = project.targets || project.architect;