Skip to content

Commit 5a13db1

Browse files
committed
Added support to pass new headless flag
1 parent dc484ae commit 5a13db1

File tree

4 files changed

+47
-20
lines changed

4 files changed

+47
-20
lines changed

azure-pipelines.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ steps:
3030
- script: |
3131
npm install --no-progress --loglevel=error --no-fund
3232
npm run build
33+
npm run test
3334
npm run coverage
3435
npm run integration-test
3536
displayName: "npm install, build and test"

src/BaseBrowser.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export default class BaseBrowser {
2020
}
2121
});
2222

23-
var allflags = [
23+
let allflags = [
2424
'--user-data-dir=' + this.userDataDir,
2525
// https://github.com/GoogleChrome/chrome-launcher/blob/master/docs/chrome-flags-for-tools.md#--enable-automation
2626
'--enable-automation',
@@ -41,20 +41,28 @@ export default class BaseBrowser {
4141
}
4242

4343
_getHeadlessOptions(url: string): string[] {
44-
var mergedArgs = this._getOptions(url).concat([
45-
'--headless',
44+
let mergedArgs = this._getOptions(url);
45+
46+
// Adding Headless flag
47+
// If there is arg with --headless=new or --headless=old, don't add --headless flag
48+
mergedArgs = mergedArgs.some((flag) => flag.indexOf('--headless=') !== -1)
49+
? mergedArgs
50+
: mergedArgs.concat(['--headless']);
51+
52+
// Add other flags to support headless mode
53+
mergedArgs = mergedArgs.concat([
4654
'--no-proxy-server',
4755
//'--no-sandbox',
4856
//'--disable-gpu',
4957
]);
5058

51-
var args: string[];
59+
// Add remote debugging port
60+
mergedArgs = mergedArgs.some(
61+
(flag) => flag.indexOf('--remote-debugging-port=') !== -1
62+
)
63+
? mergedArgs
64+
: mergedArgs.concat(['--remote-debugging-port=9222']);
5265

53-
if (mergedArgs.some((f) => f.indexOf('--remote-debugging-port=') !== -1)) {
54-
args = mergedArgs;
55-
} else {
56-
args = mergedArgs.concat(['--remote-debugging-port=9222']);
57-
}
58-
return args;
66+
return mergedArgs;
5967
}
6068
}

src/Utilities.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default class Utilities {
1919
'/bin',
2020
];
2121

22-
var edgeBIN: string = '/usr/bin/' + command;
22+
let edgeBIN: string = '/usr/bin/' + command;
2323

2424
try {
2525
fs.accessSync(edgeBIN, fs.constants.X_OK);
@@ -34,7 +34,7 @@ export default class Utilities {
3434
return null;
3535
}
3636

37-
var darwinPaths = [
37+
let darwinPaths = [
3838
path.join(process.env.HOME || '', defaultPath),
3939
defaultPath,
4040
];
@@ -56,18 +56,18 @@ export default class Utilities {
5656
return null;
5757
}
5858

59-
var suffix = '\\Microsoft\\' + edgeDirName + '\\Application\\msedge.exe';
60-
var prefixes = [
59+
let suffix = '\\Microsoft\\' + edgeDirName + '\\Application\\msedge.exe';
60+
let prefixes = [
6161
process.env["PROGRAMFILES(X86)"],
6262
process.env.PROGRAMFILES,
6363
process.env.LOCALAPPDATA,
6464
process.env.ProgramW6432,
6565
];
6666

67-
var edgePath: string | null = null;
67+
let edgePath: string | null = null;
6868
for (let i = 0; i < prefixes.length; i++) {
6969
try {
70-
var windowsEdgeDirectory = path.join(prefixes[i] || '', suffix);
70+
let windowsEdgeDirectory = path.join(prefixes[i] || '', suffix);
7171
fs.accessSync(windowsEdgeDirectory);
7272
edgePath = windowsEdgeDirectory;
7373
break;
@@ -81,13 +81,13 @@ export default class Utilities {
8181
}
8282

8383
static sanitizeJSFlags(flag: string) {
84-
var test = /--js-flags=(['"])/.exec(flag);
84+
let test = /--js-flags=(['"])/.exec(flag);
8585
if (!test) {
8686
return flag;
8787
}
88-
var escapeChar = test[1];
89-
var endExp = new RegExp(escapeChar + '$');
90-
var startExp = new RegExp('--js-flags=' + escapeChar);
88+
let escapeChar = test[1];
89+
let endExp = new RegExp(escapeChar + '$');
90+
let startExp = new RegExp('--js-flags=' + escapeChar);
9191
return flag.replace(startExp, '--js-flags=').replace(endExp, '');
9292
}
9393

tests/Launcher.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { expect } from 'chai';
22
import EdgeDevBrowser from '../src/channels/EdgeDev';
3+
import EdgeAnyHeadlessBrowser from '../src/headlessChannels/EdgeAnyHeadless';
34
import EdgeDevHeadlessBrowser from '../src/headlessChannels/EdgeDevHeadless';
45

56
describe('Verify options are returned', function () {
@@ -49,4 +50,21 @@ describe('Verify options are returned', function () {
4950
'--js-flags=--trace-opt --trace-deopt --trace-bailout'
5051
);
5152
});
53+
54+
it('Verify options for Edge Any Headless with new headless flag', function () {
55+
var launcher = {
56+
_getOptions: (url) => {},
57+
};
58+
59+
var browser = EdgeAnyHeadlessBrowser.call(launcher, function () {}, {
60+
edgeDataDir: 'C:\\Users\\UserName\\AppData\\Local\\Temp\\karma-27597020',
61+
flags: ['--headless=new'],
62+
});
63+
64+
var options = launcher._getOptions('https://localhost:4200');
65+
66+
expect(options).contains('--enable-automation');
67+
expect(options).contains('--headless=new');
68+
expect(options).not.contains('--headless');
69+
});
5270
});

0 commit comments

Comments
 (0)