-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprotractor.conf.browserstack-remote.js
98 lines (90 loc) · 3.38 KB
/
protractor.conf.browserstack-remote.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
// Note that this is the config file for e2e tests using BrowserStack's
// automation API (against remote hosts).
// See protractor.conf.browserstack-local.js for local-test settings.
const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
},
baseUrl: '<overridden - pass in cli>',
params: {
loginUrl: 'iam.test.auckland.ac.nz/profile/SAML2/Redirect/SSO',
credentials: {
username: process.env.TEST_ACCT_USERNAME,
password: process.env.TEST_ACCT_PASSWORD
}
},
onPrepare: function () {
require('ts-node').register({
project: require('path').join(__dirname, './tsconfig.json')
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: StacktraceOption.PRETTY } }));
const { browser, element, by, ExpectedConditions } = require('protractor');
browser.driver.manage().window().maximize();
/*
* Steps to perform user login prior to all tests
*/
browser.driver.get(browser.baseUrl);
browser.findElement(by.className('signin-button')).click();
// wait for UoA SSO login page to load, then submit credentials
browser.driver.wait(async function() {
const url = await browser.driver.getCurrentUrl();
return url.includes(browser.params.loginUrl);
}, 10000).then(function() {
browser.waitForAngularEnabled(false); // required for fixing safari errors
browser.driver.wait(ExpectedConditions.visibilityOf(element(by.id('username'))), 15000);
browser.driver.findElement(by.id('username')).sendKeys(browser.params.credentials.username);
browser.driver.findElement(by.id('password')).sendKeys(browser.params.credentials.password);
browser.driver.findElement(by.className('login-button')).click();
});
browser.waitForAngularEnabled(true);
// wait for the login to complete and return to the base url
return browser.driver.wait(async function() {
const url = await browser.driver.getCurrentUrl();
return url === browser.baseUrl;
}, 10000);
},
seleniumAddress: 'http://hub-cloud.browserstack.com/wd/hub',
specs: [
'./src/**/*.e2e-spec.ts'
],
commonCapabilities: {
'browserstack.user': process.env.BROWSERSTACK_CREDENTIALS_USER,
'browserstack.key': process.env.BROWSERSTACK_CREDENTIALS_KEY,
'project': 'eResearchDashboard',
'build': 'Production',
'browserstack.debug': false,
'browserstack.video': true,
'acceptSslCerts': true,
'browserstack.maskCommands': 'setValues, getValues, setCookies, getCookies',
},
multiCapabilities: [
{
'browserName': 'Chrome',
'os': 'Windows',
'os_version': '10',
'resolution': '1280x1024'
},
{
'browserName': 'Firefox',
'os': 'Windows',
'os_version': '10',
'resolution': '1280x1024'
},
{
'browserName': 'Safari',
'os': 'OS X',
'os_version': 'Catalina',
'resolution': '1280x1024'
}
]
};
// Code to support common capabilities
exports.config.multiCapabilities.forEach(function (caps) {
for (var i in exports.config.commonCapabilities) caps[i] = caps[i] || exports.config.commonCapabilities[i];
});