added Protractor for end-to-end testing
This commit is contained in:
parent
0841d2bfb9
commit
31d518f3e1
6 changed files with 524 additions and 145 deletions
66
static/test/protractor.conf.ts
Normal file
66
static/test/protractor.conf.ts
Normal file
|
@ -0,0 +1,66 @@
|
|||
import { Config, browser } from 'protractor';
|
||||
import * as request from 'request';
|
||||
|
||||
|
||||
/*
|
||||
* Use a set environment variable or default value for the app host.
|
||||
*/
|
||||
export const appHost: string = process.env.APP_HOST || 'http://localhost:5000';
|
||||
|
||||
|
||||
/**
|
||||
* Protractor is configured to run against a Selenium instance running locally on port 4444 and a Quay instance running
|
||||
* locally on port 5000.
|
||||
* Easiest method is running the Quay and Selenium containers:
|
||||
* $ docker run -d --net=host -v /dev/shm:/dev/shm selenium/standalone-chrome:3.4.0
|
||||
* $ docker run -d --net=host quay.io/quay/quay
|
||||
* $ yarn run e2e
|
||||
*/
|
||||
export const config: Config = {
|
||||
framework: 'jasmine',
|
||||
seleniumAddress: 'http://localhost:4444/wd/hub',
|
||||
// Uncomment to run tests against local Chrome instance
|
||||
// directConnect: true,
|
||||
capabilities: {
|
||||
browserName: 'chrome',
|
||||
chromeOptions: {
|
||||
args: [
|
||||
'--disable-infobars'
|
||||
],
|
||||
prefs: {
|
||||
'profile.password_manager_enabled': false,
|
||||
'credentials_enable_service': false,
|
||||
'password_manager_enabled': false
|
||||
}
|
||||
}
|
||||
},
|
||||
onPrepare: () => {
|
||||
browser.driver.manage().window().maximize();
|
||||
|
||||
// Resolve promise when request returns HTTP 200
|
||||
return new Promise((resolve, reject) => {
|
||||
const pollServer = (success, failure) => {
|
||||
request(appHost, (error, response, body) => {
|
||||
if (!error && response.statusCode == 200) {
|
||||
console.log(`Successfully connected to server at ${appHost}`);
|
||||
success();
|
||||
} else {
|
||||
console.log(`Could not connect to server at ${appHost}`);
|
||||
setTimeout(() => {
|
||||
failure(success, failure);
|
||||
}, 5000);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
pollServer(resolve, pollServer);
|
||||
});
|
||||
},
|
||||
onComplete: () => {
|
||||
browser.close();
|
||||
},
|
||||
specs: [
|
||||
'./e2e/sanity.scenario.ts',
|
||||
'./e2e/trigger-creation.scenario.ts'
|
||||
],
|
||||
};
|
Reference in a new issue