Changelog History
Page 5
-
v3.0.0 Changes
๐ We're releasing version 3.0 with some breaking changes. In summary - Jasmine 1.3 is removed, only Jasmine 2 is now supported, old Node.JS support is dropped, and plugins now need to be explicitly required. Full details below.
โฌ๏ธ Dependency Version Upgrades
(18e1f71) chore(webdriver): upgrade Protractor to webdriver 2.48.2
(1f44a6e) chore(deps): bump chromedriver and iedriver versions IEDriver from 2.47.0 to 2.48.0
ChromeDriver from 2.19 to 2.20. Changelog: http://chromedriver.storage.googleapis.com/2.20/notes.txt
๐ Features
(97e6703) feat(protractor): Add protractor.prototype.restart
(2007f06) feat(protractor): add flag to stop protractor from tracking $timeout
(a40a4ba) feat(ElementArrayFinder#get): Implemented ability to pass promise as index to ElementArrayFinder#get
(a54c0e0) feat(plugins): Add config option to disable logging of warnings in console plugin
Running tests in multiple browsers ends up printing out a lot of useless warnings I'm already aware of. To make skimming through logs in the case of an actual failure easier, I want to be able to disable the logging of warnings in the console plugin.
- (7015010) feat(driver providers): Add BrowserStack support.
Also added BrowserStack to CI
๐ Bug Fixes
- (7cba4ec) fix(ng-repeat): properly detect the end of an ng-repeat-start block
Discovered while investigating issue #2365
๐ฅ Breaking Changes
- (2bde92b) chore(jasmine): remove jasmine 1.3
and update docs. Also, use jasmine 2 for running all Protractor's unit tests.
BREAKING CHANGE: Now, both jasmine and jasmine2 frameworks use jasmine 2.3. Users still using jasmine version <2 will have to upgrade.
- (18e1f71) chore(webdriver): upgrade Protractor to webdriver 2.48.2
BREAKING CHANGE: 1) Users will no longer be able to use node versions <4. 2) There is significant changes to the control flow, and tests may need to be modified to be compliant with the new control flow. See https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
- (ac1e21e) chore(plugins): Split first party plugins into seperate repos
BREAKING CHANGE:
The Accessibility, NgHint, Timeline, and Console plugins are now located in their own separate node modules. You will need to explicitly require each module you use. See https://github.com/angular/protractor/blob/master/docs/plugins.md#first-party-plugins for info for each module.
- (ddb8584) chore(cucumber): Remove cucumber from internal implementation
BREAKING CHANGE:
Cucumber has been community maintained for a while, and in order to allow it to move faster, it is no longer part of the core Protractor library. It is now published on npm under
protractor-cucumber-framework
and will require settingframeworkPath
in your configuration file. See https://github.com/angular/protractor/blob/master/docs/frameworks.md#using-cucumber for full instructions on use now. -
v2.5.1 Changes
๐ This release is a hotfix for node 0.10 support
- (039ffa7) fix(configParser): Remove path.parse so protractor works with node < v0.12
Closes #2588
-
v2.5.0 Changes
๐ This release contains a hotfix for windows path issues and early support for Angular2 apps
๐ Features
- (c5d37c2) feat(lib): add useAllAngularAppRoots option
This allows waiting for all angular applications on the page, for angular2 apps only.
- (f246880) feat(lib): add support for waiting for angular2
Use Angular2's testability API, if present, when waiting for stability or loading a page.
Closes #2396
๐ Bug Fixes
- (d6aebba) fix(config): Fixes absolute path parsing in windows
This allows absolute paths absolute paths in to be properly parsed in windows. This should maintain the line-number feature introduced in ff88e without breakage.
- (04e5bfb) chore(runner): make plugins optional param for createBrowser
-
v2.4.0 Changes
๐ This release contains only a version update to
selenium-webdriver
, webdriver javascript bindings, and associated bug fixes.โฌ๏ธ Dependency Version Upgrades
- (9a202ab) chore(dependencies): update selenium-webdriver to 2.47.0
Along with it, update
jasminewd2
to avoid situations where the control flow gets locked up and hangs.Potential Breaking Change:
This is passing all existing Protractor tests, but there is a possibility that the changes to the control flow will cause some test flows to hang. If this causes issues, such as tests hanging or commands executing out of order, please revisit your use of functions affecting the control flow, such as
flow.execute
.See the selenium-webdriver changelog at https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
๐ Bug Fixes
- (f034e01) fix(synchronizing): use the same control flow when ignoring sync
Previously, the order of frames and tasks on the control flow was different depending on
browser.ignoreSynchronization
. This fixes the inconsistency by creating an empty task when ignoreSynchronization is true.Practically, this fixes the polling spec failing after the update to [email protected].
-
v2.3.0 Changes
๐ This release contains updates which fix some issues with dependencies that had gotten stale. However, it does not yet contain an update to the selenium-webdriver dependency, because of potential breaking changes. That update will be done in a separate [email protected] release. See issue 2245.
โฌ๏ธ Dependency Version Upgrades
- (cfd8d00) feat(webdriver): update webdriver and chromedriver to latest version
Updating Selenium standalone from 2.45.0 to 2.47.0 Updating ChromeDriver from 2.15 to 2.19 Selenium Changelog: https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md ChromeDriver Changelog: http://chromedriver.storage.googleapis.com/2.19/notes.txt
(802b20f) chore(selenium): update selenium from 2.47.0 to 2.47.1
(7a7aca8) chore(jasmine): bump jasmine version from 2.3.1 to 2.3.2
(eab828e) chore(travis): test against node 4
Test against node 4 on Travis, and remove support for node 0.10.
- (96def81) chore(saucelabs): updated saucelabs dependency to 1.0.1 to support proxy
๐ Features
- (c989a7e) feat(webdriver-manager): add --ie32 commandline option
The new option allows to download the 32-bit version of the IE driver on a 64-bit system, as the 64-bit version has been broken for over a year now (the sendKeys() function works very slowly on it).
- (ff88e96) feat(cucumber): Allow cucumber tests containing line numbers
example:
specs: [ 'cucumber/lib.feature:7' ]
๐ Bug Fixes
- (1487e5a) fix(protractor.wrapDriver): allow browser instances to work even if they were not set up through the runner
Fixes #2456
-
v2.2.0 Changes
๐ฅ Breaking Changes
- ๐ If you use the plugin API, it has changed a lot. See
[
docs/plugins.md
](docs/plugins.md) for details. The good news is that it is being taken out of beta, so it should be more stable in the future.
โฌ๏ธ Dependency Version Upgrades
- (786ab05) chore(dependencies): update request to 2.57
Closes #2205
๐ Features
(f2a11a7) feat(plugins): Changed and expanded the plugin API
- Changed the plugin API so that it is more uniform (see docs/plugins.md)
- Updated existing plugins to the new API
- Added the
onPageLoad
andonPageSync
entry points for plugins for modifyingbrowser.get
- Added the
waitForPromise
andwaitForCondition
entry points for plugins for modifyingwaitForAngular
- Added tests
This closes #2126 and helps out @andresdominguez
- (aded26b) feat(webdriver-manager): update download logic with streaming
Also adds a content length check to make sure the downloaded binaries are the correct size. This seems to fix up some unreliable download issues that we were previously having.
(7aeebd6) feat(plugins): reporting loaded plugins
(6c10378) feat(protractor): expose pending $http and $timeout on a timeout
Now when a test times out while waiting for Angular to be stable, pending $timeout and $http tasks will be reported to the console.
๐ Bug Fixes
(c30afdd) fix(test): fixed tests under npm test
(3508335) fix(element): ElementArrayFinder.count was slow
The bug fix for #1903 (https://github.com/angular/protractor/commit/2a765c76e121de13ff86a279fe3f21cb15c17783) was causing ElementArrayFinder.prototype.count to be slow because of the extranous checks that must be performed. However, the checks could be delayed into the isPresent check, which will mitigate this issue
fixes(#2359)
- (b147033) fix(by.exactRepeater): should split by "="
Closes #2335
- (4c9886b) fix(Chrome Accessibility Plugin) No error context
If your tests fail because of StaleElementReferenceError then there is no context about where this is coming from. By having the failure be handled inside of the plugin then grunt can fail gracefully. Additionally, this provides context about where the error originated from.
Fixes #2331
- (d15ccdc) fix(phantomJS): Reset URL cannot be a data url for PhantomJS
When trying to use the lates version of Angular with PhantomJS we get a message complaining about "Detected a page unload event". This was fixed in earlier versions of Angular, see issue #85, but reappeared now. The problem is that using data urls to reset the page causes this issue, so we have to do as we do with Safari and use "about:blank" instead
(e6369ac) docs(tutorial): use Jasmine v2 in the tutorial
(e60dc0f) fix(browser.refresh): use timeout in milliseconds
When invoked without arguments browser.refresh used a 10-millisecond timeout, wrongly documented as seconds. It now delegates timeout handling to browser.get, which defaults to DEFAULT_GET_PAGE_TIMEOUT (10 seconds).
- (0262268) fix(cucumber): fix beforeFeature event handler call guard
Fixes the run failures reported in https://github.com/cucumber/cucumber-js/issues/342.
- ๐ If you use the plugin API, it has changed a lot. See
[
-
v2.1.0 Changes
โฌ๏ธ Dependency Version Upgrades
- (25b1fa0) feat(jasmine): update jasmine dependency to 2.3.1
Updated from 2.1.1. See Jasmine's changelog at https://github.com/jasmine/jasmine/tree/master/release_notes
Closes #1795. Closes #2094. Closes #1768.
- (25e3b86) chore(chromedrivier): Update chromedriver to 2.15
๐ Features
- (45341c9) feat(explorer): allow element explorer to start as a server
If element explorer is run with a port (i.e. --debuggerServerPort 1234), it will start up a server that listens to command from the port instead of a repl that listens to process.stdin.
(cf9a26f) feat(plugins): allow plugins.postTest to know what test just ran
(0f80696) feat(plugins): inline plugins
(de49969) feat(debugger): make element explorer work with node 0.12.0
Node has changed its debugger significantly in 0.12.0, and these changes are necessary to get it to work now.
Specifically here are the key points to take note:
Before, the process continues running after
process._debugProcess(pid);
is called, but now, the process stops.To over come this, the call to
process._debugProcess(pid)
is moved from protractor into the debugger client. Secondly, because the process stops after the call, we callreqContinue
once the debugger connection is established, so that protractor continues into the first break point (for backwards compatibility, we added an extra empty webdriver command so that in earlier versions of node, protractor doesn't go past the first break point from the reqContinue).Before repl provides '(foobar\n)' when an user inputs 'foobar'. Now it is just 'foobar\n'.
We will parse and strip away both the parenthesis and '\n' to support all versions of node.
Additionally (non-related to node 0.12.0), this change makes debugger processes fail fast if the port is taken.
- (7b96db0) feat(browser.get): Return a promise that handles errors in browser.get
๐ Bug Fixes
- (815ff5d) fix(jasmine2): be consistent about passing assertions in output JSON
See #2051
- (e6e668c) chore(jasmine): update jasminewd2 to 0.0.4
This improves the control flow schedule messages for debugging and fixes an issue with the
this
variable inside tests. See https://github.com/angular/jasminewd/issues/22- (e599cf3) fix(taskscheduler): label sharded tasks with numbers instead of letters
Letters run into a problem with a maximum of 26. See #2042
- (fda3236) fix(config): add sauceAgent property to protractor config
Closes #2040
(fa699b8) fix(debugger): fix 'getControlFlowText()' broken in webdriver 2.45
(b783dd8) fix(browser): remove subsequent duplicate module
browser.removeMockModule() misses next duplicate module because of iteration over an array it's modifying.
(e3d4ad1) fix(stacktrace): remove jasmine2 specific stacktraces
(3cded9b) fix(locators): escape query in byExactBinding
See http://stackoverflow.com/q/3561711
Closes #1918
- (e18d499) fix(cucumber): process no-snippets param for cucumber framework
-
v2.0.0 Changes
Why is this change version 2.0? Protractor is following semver, and there's some breaking changes here.
โฌ๏ธ Dependency Version Upgrades
- (34f0eeb) fix(element): update to [email protected] and remove element.then
This change updates the version of WebDriverJS (selenium-webdriver node module) from 2.44 to 2.45.1. See the full changelog at https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
- (8976e75) chore(jasmine): bump version of jasminewd2
๐ Features
(997937d) feat(console plugin): Added new console plugin
(ef6a09d) feat(webdriver-manager): allow a custom cdn for binaries
Added a cdn value for each binary to be overrided by the cli argument
alternate_cdn
.๐ Bug Fixes
- (fb92be6) fix(accessibility): improve output for long elements
Instead of just printing the first N characters of the element's template, print the first and last N/2.
See #1854
(2a765c7) fix(element): return not present when an element disappears
(8a3412e) fix(bug): by.buttonText() should not be effected by CSS style
Closes issue #1904
(5d23280) fix(debugger): fix issue where output does not display circular dep and functions
(ef0fbc0) fix(debugger): expose require into debugger
๐ฅ Breaking Changes
- (34f0eeb) fix(element): update to [email protected] and remove element.then
This change updates the version of WebDriverJS (selenium-webdriver node module) from 2.44 to 2.45.1. See the full changelog at https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
To enable the update and remove confusion, this removes the
element().then
function unless there is an action result. This function is completely unnecessary, because it would always resolve to itself, but the removal may cause breaking changes.Before:
element(by.css('foo')).then(function(el) { return el.getText().then(...); });
After:
element(by.css('foo')).getText().then(...);
In other words, an ElementFinder is now no longer a promise until an action has been called.
Before:
var el = element(by.css('foo')); protractor.promise.isPromise(el); // true protractor.promise.isPromise(el.click()); // true
After:
var el = element(by.css('foo')); protractor.promise.isPromise(el); // false protractor.promise.isPromise(el.click()); // true
Also, fixes
filter
andmap
to work with the new WebDriverJS.- (3c04858)
chore(config): remove deprecated
chromeOnly
This has been replaced with
directConnect
.- Due to (1159612)
Due to changes in how scheduling works on the control flow, specs in Jasmine1 will no longer wait for multiple commands scheduled in
onPrepare
or in the global space of the test file.Before:
onPrepare: function() { browser.driver.manage().window().maximize(); // This second command will not finish before the specs start. browser.get('http://juliemr.github.io/protractor-demo'); }
To fix, return the last promise from onPrepare:
After:
onPrepare: function() { browser.driver.manage().window().maximize(); return browser.get('http://juliemr.github.io/protractor-demo'); }
- Due to (1159612)
Due to changes in WebDriverJS,
wait
without a timeout will now default to waiting for 0 ms instead of waiting indefinitely.Before:
browser.wait(fn); // would wait indefinitely
After
browser.wait(fn, 8000) // to fix, add an explicit timeout
This will be reverted in the next version of WebDriverJS.
-
v1.8.0 Changes
โฌ๏ธ Dependency Version Upgrades
- (1159612) fix(webdriver): bump selenium to 2.45.0
Bump the selenium standalone binary to 2.45.0.
See https://code.google.com/p/selenium/source/browse/java/CHANGELOG for a full list of changes to the selenium server.
Closes #1734
๐ Features
- (54163dc) feat(a11yPlugin): plugin for integrating with Chrome Accessibility Developer Tools
Also includes missing Angular map files. See plugins/accessibility/index.js for usage.
- (658902b) feat(plugins): add postTest hook for plugins
Additionally, add some tests to make sure that plugins can fail properly.
Closes #1842
(13d34c9) feat(a11yPlugin): add support for Tenon.io
(5f8cffd) feat(plugins): allow plugins to export a name for use in reporting
๐ Bug Fixes
(aabdd56) fix(debugger): breakpoint isn't set properly for windows
(361ae21) fix(plugins): add a 'test' or 'fail' string to plugins
Closes #1843
- (847e739) fix(webdriver-manager): unzipping ie driver should overwrite old version
-
v1.7.0 Changes
โฌ๏ธ Dependency Version Upgrades
- (2658865) feat(webdriver): bump chromedriver to 2.14
Chromedriver 2.14 contains support for accessing elements inside the shadow DOM.
๐ Features
- (d220ecf) feat(locators): add by.deepCss selector for finding elements in the shadow dom
Usage:
element(by.deepCss('.foo')) equivalent to 'element(by.css('* /deep/ .foo'))
(324f69d) feat(locators): add by.exactRepeater
(eb9d567) feat(frameworks): add support for custom frameworks
Usage:
exports.config = { framework: 'custom', frameworkPath: '/path/to/your/framework/index.js' }
- (9bc1c53) feat(expectedConditions): add helper library for syncing with non-angular apps
Usage:
var EC = protractor.ExpectedConditions; var button = $('#xyz'); var isClickable = EC.elementToBeClickable(button); browser.get(URL); browser.wait(isClickable, 5000); //wait for an element to become clickable button.click();
You can also customize the conditions:
var urlChanged = function() { return browser.getCurrentUrl().then(function(url) { return url != 'http://www.angularjs.org'; }); }; // condition to wait for url to change, title to contain 'foo', and $('abc') element to contain text 'bar' var condition = EC.and(urlChanged, EC.titleContains('foo'), EC.textToBePresentInElement($('abc'), 'bar')); $('navButton').click(); browser.wait(condition, 5000); //wait for condition to be true. // do other things
(fb099de) feat(elementExplorer): Combine browser.pause with elementExplorer
- reuse logic for browser.pause for elementExplorer
- introduce browser.enterRepl
- allow customization of driver for elementExplorer
- fix bug where repl cannot return an ElementFinder (related #1600)
Closes #1314, #1315
(9def5e0) feat(runner): add browser.getProcessedConfig method
Now, instances of the
browser
object have agetProcessedConfig
method which returns a promise that resolves to the current Protractor configuration object for the current runner instance. This means that if multiCapabilities are being used or tests are sharded,getProcessedConfig
will return an object with thecapabilities
andspecs
property specific to the current instance.Closes #1724
๐ Bug Fixes
- (ccb165d) fix(webdriver-manager): unzipping chromedriver should override old version
See #1813