protractor
Version:
Webdriver E2E test wrapper for Angular.
323 lines (282 loc) • 13.7 kB
JavaScript
// Reference Configuration File
//
// This file shows all of the configuration options that may be passed
// to Protractor.
//
// Because this file shows all of the options, if used in practice some
// will be overridden or ignored. If you're looking for a seed configuration
// file, see example/conf.js
exports.config = {
// ---------------------------------------------------------------------------
// ----- How to connect to Browser Drivers -----------------------------------
// ---------------------------------------------------------------------------
//
// Protractor needs to know how to connect to Drivers for the browsers
// it is testing on. This is usually done through a Selenium Server.
// There are four options - specify one of the following:
//
// 1. seleniumServerJar - to start a standalone Selenium Server locally.
// 2. seleniumAddress - to connect to a Selenium Server which is already
// running.
// 3. sauceUser/sauceKey - to use remote Selenium Servers via Sauce Labs.
// 4. directConnect - to connect directly to the browser Drivers.
// This option is only available for Firefox and Chrome.
// ---- 1. To start a standalone Selenium Server locally ---------------------
// The location of the standalone Selenium Server jar file, relative
// to the location of this config. If no other method of starting Selenium
// Server is found, this will default to
// node_modules/protractor/selenium/selenium-server...
seleniumServerJar: null,
// The port to start the Selenium Server on, or null if the server should
// find its own unused port. Ignored if seleniumServerJar is null.
seleniumPort: null,
// Additional command line options to pass to selenium. For example,
// if you need to change the browser timeout, use
// seleniumArgs: ['-browserTimeout=60']
// Ignored if seleniumServerJar is null.
seleniumArgs: [],
// ChromeDriver location is used to help find the chromedriver binary.
// This will be passed to the Selenium jar as the system property
// webdriver.chrome.driver. If null, Selenium will
// attempt to find ChromeDriver using PATH.
chromeDriver: './selenium/chromedriver',
// ---- 2. To connect to a Selenium Server which is already running ----------
// The address of a running Selenium Server. If specified, Protractor will
// connect to an already running instance of Selenium. This usually looks like
// seleniumAddress: 'http://localhost:4444/wd/hub'
seleniumAddress: null,
// ---- 3. To use remote browsers via Sauce Labs -----------------------------
// If sauceUser and sauceKey are specified, seleniumServerJar will be ignored.
// The tests will be run remotely using Sauce Labs.
sauceUser: null,
sauceKey: null,
// Use sauceAgent if you need customize agent for https connection to
// saucelabs.com (i.e. your computer behind corporate proxy)
sauceAgent: null,
// Use sauceSeleniumAddress if you need to customize the URL Protractor
// uses to connect to sauce labs (for example, if you are tunneling selenium
// traffic through a sauce connect tunnel). Default is
// ondemand.saucelabs.com:80/wd/hub
sauceSeleniumAddress: null,
// ---- 4. To connect directly to Drivers ------------------------------------
// Boolean. If true, Protractor will connect directly to the browser Drivers
// at the locations specified by chromeDriver and firefoxPath. Only Chrome
// and Firefox are supported for direct connect.
directConnect: false,
// Path to the firefox application binary. If null, will attempt to find
// firefox in the default locations.
firefoxPath: null,
// ---------------------------------------------------------------------------
// ----- What tests to run ---------------------------------------------------
// ---------------------------------------------------------------------------
// Spec patterns are relative to the location of this config.
specs: [
'spec/*_spec.js'
],
// Patterns to exclude.
exclude: [],
// Alternatively, suites may be used. When run without a command line
// parameter, all suites will run. If run with --suite=smoke or
// --suite=smoke,full only the patterns matched by the specified suites will
// run.
suites: {
smoke: 'spec/smoketests/*.js',
full: 'spec/*.js'
},
// ---------------------------------------------------------------------------
// ----- How to set up browsers ----------------------------------------------
// ---------------------------------------------------------------------------
//
// Protractor can launch your tests on one or more browsers. If you are
// testing on a single browser, use the capabilities option. If you are
// testing on multiple browsers, use the multiCapabilities array.
// For a list of available capabilities, see
// https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities
//
// In addition, you may specify count, shardTestFiles, and maxInstances.
capabilities: {
browserName: 'chrome',
// Name of the process executing this capability. Not used directly by
// protractor or the browser, but instead pass directly to third parties
// like SauceLabs as the name of the job running this test
name: 'Unnamed Job',
// User defined name for the capability that will display in the results log
// Defaults to the browser name
logName: 'Chrome - English',
// Number of times to run this set of capabilities (in parallel, unless
// limited by maxSessions). Default is 1.
count: 1,
// If this is set to be true, specs will be sharded by file (i.e. all
// files to be run by this set of capabilities will run in parallel).
// Default is false.
shardTestFiles: false,
// Maximum number of browser instances that can run in parallel for this
// set of capabilities. This is only needed if shardTestFiles is true.
// Default is 1.
maxInstances: 1,
// Additional spec files to be run on this capability only.
specs: ['spec/chromeOnlySpec.js'],
// Spec files to be excluded on this capability only.
exclude: ['spec/doNotRunInChromeSpec.js'],
// Optional: override global seleniumAddress on this capability only.
seleniumAddress: null
},
// If you would like to run more than one instance of WebDriver on the same
// tests, use multiCapabilities, which takes an array of capabilities.
// If this is specified, capabilities will be ignored.
multiCapabilities: [],
// If you need to resolve multiCapabilities asynchronously (i.e. wait for
// server/proxy, set firefox profile, etc), you can specify a function here
// which will return either `multiCapabilities` or a promise to
// `multiCapabilities`.
// If this returns a promise, it is resolved immediately after
// `beforeLaunch` is run, and before any driver is set up.
// If this is specified, both capabilities and multiCapabilities will be
// ignored.
getMultiCapabilities: null,
// Maximum number of total browser sessions to run. Tests are queued in
// sequence if number of browser sessions is limited by this parameter.
// Use a number less than 1 to denote unlimited. Default is unlimited.
maxSessions: -1,
// ---------------------------------------------------------------------------
// ----- Global test information ---------------------------------------------
// ---------------------------------------------------------------------------
//
// A base URL for your application under test. Calls to protractor.get()
// with relative paths will be prepended with this.
baseUrl: 'http://localhost:9876',
// CSS Selector for the element housing the angular app - this defaults to
// body, but is necessary if ng-app is on a descendant of <body>.
rootElement: 'body',
// The timeout in milliseconds for each script run on the browser. This should
// be longer than the maximum time your application needs to stabilize between
// tasks.
allScriptsTimeout: 11000,
// How long to wait for a page to load.
getPageTimeout: 10000,
// A callback function called once configs are read but before any environment
// setup. This will only run once, and before onPrepare.
// You can specify a file containing code to run by setting beforeLaunch to
// the filename string.
beforeLaunch: function() {
// At this point, global variable 'protractor' object will NOT be set up,
// and globals from the test framework will NOT be available. The main
// purpose of this function should be to bring up test dependencies.
},
// A callback function called once protractor is ready and available, and
// before the specs are executed.
// If multiple capabilities are being run, this will run once per
// capability.
// You can specify a file containing code to run by setting onPrepare to
// the filename string.
onPrepare: function() {
// At this point, global variable 'protractor' object will be set up, and
// globals from the test framework will be available. For example, if you
// are using Jasmine, you can add a reporter with:
// jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter(
// 'outputdir/', true, true));
//
// If you need access back to the current configuration object,
// use a pattern like the following:
// browser.getProcessedConfig().then(function(config) {
// // config.capabilities is the CURRENT capability being run, if
// // you are using multiCapabilities.
// console.log('Executing capability', config.capabilities);
// });
},
// A callback function called once tests are finished.
onComplete: function() {
// At this point, tests will be done but global objects will still be
// available.
},
// A callback function called once the tests have finished running and
// the WebDriver instance has been shut down. It is passed the exit code
// (0 if the tests passed). This is called once per capability.
onCleanUp: function(exitCode) {},
// A callback function called once all tests have finished running and
// the WebDriver instance has been shut down. It is passed the exit code
// (0 if the tests passed). This is called only once before the program
// exits (after onCleanUp).
afterLaunch: function() {},
// The params object will be passed directly to the Protractor instance,
// and can be accessed from your test as browser.params. It is an arbitrary
// object and can contain anything you may need in your test.
// This can be changed via the command line as:
// --params.login.user 'Joe'
params: {
login: {
user: 'Jane',
password: '1234'
}
},
// If set, protractor will save the test output in json format at this path.
// The path is relative to the location of this config.
resultJsonOutputFile: null,
// If true, protractor will restart the browser between each test.
// CAUTION: This will cause your tests to slow down drastically.
restartBrowserBetweenTests: false,
// ---------------------------------------------------------------------------
// ----- The test framework --------------------------------------------------
// ---------------------------------------------------------------------------
// Test framework to use. This may be one of:
// jasmine, jasmine2, cucumber, mocha or custom.
//
// When the framework is set to "custom" you'll need to additionally
// set frameworkPath with the path relative to the config file or absolute
// framework: 'custom',
// frameworkPath: './frameworks/my_custom_jasmine.js',
// See github.com/angular/protractor/blob/master/lib/frameworks/README.md
// to comply with the interface details of your custom implementation.
//
// Jasmine and Jasmine2 are fully supported as test and assertion frameworks.
// Mocha and Cucumber have limited support. You will need to include your
// own assertion framework (such as Chai) if working with Mocha.
framework: 'jasmine2',
// Options to be passed to minijasminenode.
//
// See the full list at https://github.com/juliemr/minijasminenode/tree/jasmine1
jasmineNodeOpts: {
// If true, display spec names.
isVerbose: false,
// If true, print colors to the terminal.
showColors: true,
// If true, include stack traces in failures.
includeStackTrace: true,
// Default time to wait in ms before a test fails.
defaultTimeoutInterval: 30000
},
// Options to be passed to jasmine2.
//
// See https://github.com/jasmine/jasmine-npm/blob/master/lib/jasmine.js
// for the exact options available.
jasmineNodeOpts: {
// If true, print colors to the terminal.
showColors: true,
// Default time to wait in ms before a test fails.
defaultTimeoutInterval: 30000,
// Function called to print jasmine results.
print: function() {},
// If set, only execute specs whose names match the pattern, which is
// internally compiled to a RegExp.
grep: 'pattern',
// Inverts 'grep' matches
invertGrep: false
},
// Options to be passed to Mocha.
//
// See the full list at http://mochajs.org/
mochaOpts: {
ui: 'bdd',
reporter: 'list'
},
// Options to be passed to Cucumber.
cucumberOpts: {
// Require files before executing the features.
require: 'cucumber/stepDefinitions.js',
// Only execute the features or scenarios with tags matching @dev.
// This may be an array of strings to specify multiple tags to include.
tags: '@dev',
// How to format features (default: progress)
format: 'summary'
}
};