All Versions
90
Latest Version
Avg Release Cycle
136 days
Latest Release
774 days ago

Changelog History
Page 9

  • v0.15.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    ๐Ÿ”‹ Features

    • โšก๏ธ (f8d0291) chore(version): update the version of dependency minijasminenode

    This is notable because in the newer 0.2.6 version of minijasminenode, ddescribe and iit are supported. These should be available after running an 'npm update'.

    • (6165023) feat(runner): return a promise from runner.runOnce

    In some cases knowing when the runner has finished is a requirement (e.g. an async grunt task).

    • ๐Ÿšš (d44ef01) feat(debugging): remove webdriver lines from stacktraces by default to improve readability

    • (33fa4a4) feat(locators): by model works for anything with a model, not just input

    Notably, by.model will now find selects and textareas.

    Closes #321.

    • ๐Ÿ’ป (238bb74) feat(ignoresync): ignoreSynchronization now affects the behavior of browser.get

    Now, when ignoring synchronization, calls to browser.get are equivalent to calling browser.driver.get.

    Closes #306

    • (30c0ceb) feat(element) element.all exports an 'each' method

    Usage:

      element.all(by.model('foo')).each(function(webElement) {
        // Do stuff with webElement.
      });
    

    Closes #298

    • ๐Ÿ‘ (6a73a25) feat(by.repeat) by.repeat support for multi ng-repeat

    Make by.repeat (and its column and row friends) work with ng-repeat-start and ng-repeat-end elements.

    Closes #366. Closes #182.

    ๐Ÿ› Bug Fixes

    • (50d6fde) fix(clientSideScripts): bind-template directive shouldn't break bind locators

    Fix "UnknownError: angular.element(...).data(...).$binding[0] is undefined" error raised when trying to use "by.binding" locator in any element of a page that contains at least one "bind-template" directive.

    • (f8c606b) fix(webdriver-manager): make sure selenium standalone shuts down nicely

    This addresses selenium server shutdown in two ways

    • the node process will stay open until selenium has exited
    • if the user inputs to STDIN (e.g. press space) selenium will shut down gracefully

      • ๐Ÿ (e98f71e) fix(webdriver-manager): fix IEDriver install and running via windows

    Changed the binaries.ie.url function to return the correct URL for the IEDriverServer. Created the zip object in the win32 section to be able to decompress IEDriverServer. Added a function to normalize a command across OS and spawn it. It allows start the webdriver in win32.

    Seen here: https://github.com/yeoman/generator/blob/master/lib/actions/spawn_command.js

  • v0.14.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    ๐Ÿ”‹ Features

    • (c579a1a), (f54fd5d) feat(webdriver-manager): redo the script to run and install selenium/webdriver

    Breaking Change. As outlined in Issue #296, redoing the way the selenium/webdriver install and run helper scripts work. Now, the 'webdriver-manager' script will be available either locally or globally (depending on how protractor was installed). It replaced install_selenium_standalone and the 'start' script that was provided after install. Run webdriver-manager update to download new versions of selected webdriver binaries. Run webdriver-manager start to start the standalone server. In addition, this fixes issues with running the server starter in Windows, and allows automated downloading of the IEDriver.

    Thanks to kurthong and vipper for their PRs with windows fixes, which were very useful in preparing this.

    • 0๏ธโƒฃ (a69ebc3) feat(runner): use selenium and chromedriver from the default location if nothing else is specified

    ๐Ÿ› Bug Fixes

    • ๐Ÿ”€ (1fa090c) fix(runner): merge should override entire arrays, not just parts of them

    Closes #304

    • ๐ŸŒ (a2afb4d) fix(element): element.all.get and element.all.first/last should wrap web elements

    Closes #307

    • (f3be172) fix(runner): running with chromeOnly should try to find chromedriver with .exe extension

    Closes #283

    ๐Ÿ’ฅ Breaking Changes

    • (c579a1a) feat(webdriver-manager): redo the script to run and install selenium/webdriver

    Breaking Change. Your old selenium/start script will continue to work, but install_selenium_standalone no longer exists. To do a clean update, remove the selenium folder. Then run webdriver-manager update

    • (a1c91a2) fix(config): Make all file paths in config files relative to the config file itself

    Breaking Change Previously, onPrepare and specs were relative to the location of the config, but seleniumServerJar and chromeDriver were relative to the cwd when the test was called. If you were calling the tests from somewhere other than the same directory as the config location, you will need to change the paths of seleniumServerJar and/or chromeDriver. Closes #222.

  • v0.13.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    ๐Ÿ”‹ Features

    • (ce5f494) feat(element): element.all now has 'first' and 'last' methods

    • (ef61662) feat(runner): allow bypassing the selenium standalone server if running only chrome

    Using the config option chromeOnly now enables running ChromeDriver directly, without going through the Selenium Standalone. The chromedriver binary should be available in your PATH, or should be specified with the config option chromeDriver.

    • (76c094a) feat(getLocationAbsUrl) - allows current url to be obtained on IE (and Chrome/Firefox)

    • (6a1c918) feat(runner): add error message for bad jar path

    • (98bce7e) feat(locators): add the ability to add custom element locators with by.addLocator

    Custom locators can now be added using by.addLocator(name, script), where script is a self-contained snippet to be executed on the browser which returns an array of elements. Closes #236.

    • โšก๏ธ (c7bcc20) chore(angular): update to angular 1.2

    ๐Ÿ› Bug Fixes

    • (a24eeee) fix(runner): do not error out if only one spec pattern does not match any files

    Previously, the runner would throw an error if any one of the spec patterns did not match any files. Now it logs a warning in that case, and errors out only if there are no found files in any spec patterns. Closes #260

    • (f3b3fdb) fix(element): fix an error where all.then() wasn't calling callbacks.

    Closes #267

    • (137d804) fix(jasminewd): patched matcher should understand 'not'

    Closes #139.

  • v0.12.1 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    Minor features

    • ๐Ÿ‘ (201b59c) feat(jasminewd): better error messaging when expect is called with a WebElement

    • โœ… (d383770) feat(clientsidescripts): better error reporting from testForAngular and waitForAngular

    ๐Ÿ› Bug fixes

    • โšก๏ธ (8580c0c) fix(install-selenium): update to chromedriver 2.6

    Update to the latest version of Chromedriver. This fixes the issue with OS X 10.9. Closes #181.

    • โœ… (ebc528f) fix(debugging): switch debugging tests to the new test app urls.

    • โœ… (8ff4787) fix(runner): exit with proper code when tests fail

    When errors with messages matching /timeout/ were created, Protractor clears the control flow so that the remainder of the tasks scheduled for that spec don't bleed over into the next spec. This was messing up the promises used in the runner, since they are also webdriver promises. Long term, the runner should not use webdriver promises. For now, fix by having the runner resolve promises directly rather than through chaining, and add a TODO to use promises which aren't connected to WebDriver's control flow in the runner.

    Closes #214.

    • โ†ช (81501c5) fix(clientsidescripts): workaround for IE 8 "async page reload" init problem

    • 0๏ธโƒฃ (21264fd) fix(find): fix error when exposed to ng-options element with a default option

    Protractor will now ignore elements with the ng-bind class that don't have a proper binding on their data, instead of blowing up when encoutering them.

    Closes #165, may fix #170

    • (f672648) fix(findelements): fix isPresent for repeaters by row for real

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿšš (bf5b076) fix(cli): remove boolean verbose and stack trace options

    Also add better description for what the command line options are.

    Tiny breaking change: Rename the 'includeStackTrace' command line option to 'stackTrace' for brevity.

  • v0.12.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    โšก๏ธ This change introduces major syntax updates. Using the new syntax is recommended, but the old version is still supported for now. Note also that the test application, docs, and example tests have been updated.

    ๐Ÿ”‹ Features

    • (a2cd6c8) feat(syntax): big syntax reboot, expose global $, $$, element, and by

    โœ… In an effort to make tests more readable and clear, a few more global variables will now be exported.

    ๐Ÿ’ป browser is an instance of protractor. This was previously accessed using protractor.getInstance.

    by is a collection of element locators. Previously, this was protractor.By.

    $ is a shortcut for getting elements by css. $('.foo') === element(by.css('.foo'))

    โœ… All changes should be backwards incompatible, as tested with the new 'backwardscompat' โœ… tests.

    ๐Ÿ› Bug fixes

    • (8c87ae6) fix(onPrepare): onPrepare with a string argument should resolve from the config directory

    onPrepare can take a string, which is a filename containing a script to load adn execute โœ… before any tests run. This fixes the string to resolve the filename relative to the config file, instead of relative to the current working directory where protractor is called.

  • v0.11.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    ๐Ÿ”‹ Features

    • โœ… (02cb819) feat(cli): allow passing params directly to your test

    โž• Adds a config object 'params' which is passed directly to instances of protractor. 'params' may contain nested ๐Ÿ’ป objects, and can be changed via the command line as:

    --params.login.user 'Joe' --params.login.password 'abc'

    ๐Ÿ“œ This change also switches to using optimist to parse ๐Ÿ‘ command line flags for more flexibility and better usage ๐Ÿ“š documentation. Closes #32.

    • (c025ddb) feat(findElements): $ & $$ shortcuts.

    Introducing the $ shortcut method for finding a single element by css without having to call protractor.By.css. Additionally $$ for finding all elements by css.

    Examples:

    • ptor.$('.some .selector')
    • ptor.$$('.some .selector')

    • (7d74184) feat(explorer): add an interactive element explorer

    โœ… When debugging or first writing test suites, you may find it helpful to โœ… try out Protractor commands without starting up the entire test suite. You can do this with the element explorer. This change introduces a first version of the element explorer. Closes #107

    ๐Ÿ› Bug Fixes

    • (e45ceaa) fix(repeaters): allow finding all rows of a repeater

    Now, finding an element with the strategy 'protractor.By.repeater()' returns a promise which will resolve to an array of WebElements, where each WebElement is a row in the repeater. Closes #149.

    • (b501ceb) fix(findElements): Consistently include evaluate.

    When using findElements with a css locator, wrap the returned list of elements with protractor specific functionality.

    • ๐Ÿ’ป (c17ac12) fix(cli): allow running from command line without a config file

    If all necessary fields are specified (e.g. seleniumAddress and at least one spec), a config file shouldn't be necessary.

    ๐Ÿ’ฅ Breaking Changes

    • (421d623) fix(repeat): use 0-based indexing for repeater rows

    ๐Ÿ’ฅ BREAKING CHANGE: Finding rows with protractor.By.repeater now indexes from 0 instead of 1. This should be more familiar to most โœ… modern programmers. You will need to edit existing tests. Closes #90.

    Before:

    // The fourth foo
    ptor.findElement(protractor.By.repeater('foo in foos').row(4));
    

    After:

    // The fourth foo
    ptor.findElement(protractor.By.repeater('foo in foos').row(3));
    
  • v0.10.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    ๐Ÿ”‹ Features

    • (881759e) feat(timeouts): add a unique error message when waitForAngular times out

    To improve the readability of error messages, when waitForAngular times out it now produces a custom message. This should help clarify confusion ๐Ÿ“Š for pages that continually poll using $interval. This change also adds more ๐Ÿ“š documentation on timeouts. See issue #109.

    • ๐Ÿ‘ (37e0f1a) feat(install selenium): better communication in the install script

    โž• Adds better messages in the selenium server install script, and also ๐Ÿ‘‰ makes the script output a 'start' executable which can be used to quickly ๐Ÿ start up the selenium standalone. not yet windows friendly. Closes #108.

    • ๐ŸŒฒ (b32f5a5) feat(config): add examples for dealing with log-in

    โž• Adds examples for how to log in when the login page is not written in Angular. New examples are in spec/login.

    • (1b7675a) feat(cli): add an onPrepare callback to the config

    This onPrepare callback is useful when you want to do something with protractor before running the specs. For example, you might want to monkey-patch protractor with custom functions used by all the specs, or add the protractor instance to the globals. An example usage is shown in the spec/onPrepareConf.js file and its associated spec.

    ๐Ÿ› Bug fixes

    • (256b21c) fix(cli): allow passing the config file before the options

    The cli usage says:

    USAGE: protractor configFile [options] ๐Ÿ”€ However, the options passed as argument are merged into the default ๐Ÿ”ง configuration as soon as the configFile is met in the args parsing loop. ๐Ÿ”ง This fix merges the options in the default configuration only after the loop, allowing to pass the options to the cli before or after, or around the config file.

    • (6223825) fix(jasminewd): allow use of custom matchers

    Using jasmine.Matchers.prototype to generate the chained methods for expect() calls is flawed because it does not pick up custom matchers defined using addMatcher. Instead, use either the matchersClass for the current spec or from the environment.

    • ๐Ÿ”€ (c22fc38) fix(sync): getCurrentUrl and friends should sync with Angular first

    ๐Ÿ”€ getCurrentUrl, getPageSource, and getTitle should sync with Angular before executing. Closes #92.

    • (dd06756) fix(clientsidescripts): findElements and isElementPresent for protractor.By.select

    • (c607459) fix (navigation): The defer label should appear before other window names, not after.

    • (806f381) Fix: findElements() and isElementPresent() now work for protractor.By.input. Closes #79.

    ๐Ÿ’ฅ Breaking changes

    • (881759e) feat(timeouts): add a unique error message when waitForAngular times out

    โœ… This changes the default script timeout from 100 seconds down to 11. Tests 0๏ธโƒฃ which relied on extremely long timeouts will need to change the default script โฑ timeout with driver.manage().timeouts().setScriptTimeout(<bigNumber>).

  • v0.9.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    ๐Ÿ”‹ Features

    • (0e8de99) Wrap WebElements with Protractor specific features. This change allows chained findElement calls to work with Protractor locators. It also โž• adds a function, evaluate, to evaluate an angular expression in the context of a WebElement's scope.

    • ๐Ÿ’ป (9f53118) Improving the command line interface (adding more options). This allows โœ… the --spec option to be passed with test files that will be resolved ๐Ÿ”€ relative to the current directory. Smarter merging of default config values. Closes #65.

    • (73821fb) Adding an 'ignoreSynchronization' property to turn off Protractor's attempt to โœ… wait for Angular to be ready on a page. This can be used to test pages that ๐Ÿ“Š poll with $timeout or $http.

    ๐Ÿ› Bug fixes

    • ๐Ÿ‘ (cfc6438) Adding support for isElementPresent with Protractor locators. Closes #11.

    • (8329b01) Adding waitForAngular calls before WebElement functions. Closes #37.

  • v0.8.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    ๐Ÿ“„ Docs

    • โž• Added documentation to the docs folder.

    • โœ… (08ef244) Adding debugging tests showing different types of timeouts, and fixing โฑ a bug where scheduled tasks from a previous it block would run into โฑ the next in case of a timeout.

    ๐Ÿ”‹ Features

    • โšก๏ธ (1c7eae0) Updating the binary script to understand debug, so that protractor debug conf.js works.

    • โฑ (7a59479) Adding a 'debug' function to protractor. This schedules a debugger pause within the webdriver control flow.

    • (679c82d) Mixing in all webdriver exports to protractor. This means that webdriver classes such as ActionSequence and Keys are accessible on the global protractor.

    • (3c76246) Added nested angular app (ng-app on an element other than <html> or <body>) capability via conf file.

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  (1c9b98d) Fixed Sauce issues: low timeouts, shutdown and init order.

    ๐Ÿ’ฅ Breaking Changes

    • โšก๏ธ Now running selenium 2.25. Requires updating WebDriverJS and the selenium standalone binary and chromedriver binary.

    • ๐Ÿ”ง (a54abfb) Spec paths in configuration files are now resolved from the location of the spec file instead of the current working directory when the command line is run.

  • v0.7.0 Changes

    ๐Ÿš€ Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time.

    ๐Ÿ”‹ Features

    • โšก๏ธ (7966912) Updating to Selenium 2.24.

    • โœ… (90f0a94) Instead of having tests run with the protractor runner need to require() the protractor library, publish it to the global namespace. This insures โœ… the instance of protractor used within the tests is the same as the ๐Ÿ’ป one used on the command line. Closes #36. Version bump for incompatible API changes.

    • (cb373c9) Adding glob matching to the spec files from the config. Closes #29.

    ๐Ÿ’ฅ Breaking changes

    • โšก๏ธ Now running on selenium 2.24. Requires updating WebDriverJS and the selenium standalone binary.

    • โœ… The protractor runner now publishes protractor to the global namespace and sets up the Jasmine-WebDriver adapter. Tests run with this should no longer include

    // var protractor = require('protractor'); // No longer needed!
    // require('protractor/jasminewd'); // No longer needed!
    
    var ptor = protractor.getInstance(); // This should just work now.