(projectName: string, projectDir = '')
| 145 | } |
| 146 | |
| 147 | export async function useCIChrome(projectName: string, projectDir = ''): Promise<void> { |
| 148 | const karmaConf = path.join(projectDir, 'karma.conf.js'); |
| 149 | if (fs.existsSync(karmaConf)) { |
| 150 | // Ensure the headless sandboxed chrome is configured in the karma config |
| 151 | await replaceInFile( |
| 152 | karmaConf, |
| 153 | `browsers: ['Chrome'],`, |
| 154 | `browsers: ['ChromeHeadlessNoSandbox'], |
| 155 | customLaunchers: { |
| 156 | ChromeHeadlessNoSandbox: { |
| 157 | base: 'ChromeHeadless', |
| 158 | flags: ['--no-sandbox', '--headless', '--disable-gpu', '--disable-dev-shm-usage'], |
| 159 | }, |
| 160 | },`, |
| 161 | ); |
| 162 | } |
| 163 | |
| 164 | // Update to use the headless sandboxed chrome |
| 165 | return updateJsonFile('angular.json', (workspaceJson) => { |
| 166 | const project = workspaceJson.projects[projectName]; |
| 167 | const appTargets = project.targets || project.architect; |
| 168 | if (appTargets.test.builder === '@angular/build:unit-test') { |
| 169 | appTargets.test.options.browsers = ['ChromeHeadlessNoSandbox']; |
| 170 | } else { |
| 171 | appTargets.test.options.browsers = 'ChromeHeadlessNoSandbox'; |
| 172 | } |
| 173 | }); |
| 174 | } |
| 175 | |
| 176 | export function getNgCLIVersion(): SemVer { |
| 177 | const packages: { [name: string]: PkgInfo } = getGlobalVariable('package-tars'); |
no test coverage detected