All Versions
Latest Version
Avg Release Cycle
17 days
Latest Release

Changelog History
Page 8

  • v1.3.2 Changes

    • Interactve Shell improvements for pause()
      • Added next command for step-by-step debug when using pause().
      • Use After(pause); in a to start interactive console after last step.
    • โšก๏ธ [Puppeteer] Updated to Puppeteer 1.6.0
      • Added waitForRequest to wait for network request.
      • Added waitForResponse to wait for network response.
    • ๐Ÿ‘Œ Improved TypeScript definitions to support custom steps and page objects. By @xt1
    • ๐Ÿ›  Fixed XPath detection to accept XPath which starts with ./ by @BenoitZugmeyer
  • v1.3.1 Changes

    • ๐Ÿ›  BDD-Gherkin: Fixed running async steps.
    • 0๏ธโƒฃ [Puppeteer] Fixed process hanging for 30 seconds. Page loading timeout default via getPageTimeout set 0 seconds.
    • [Puppeteer] Improved displaying client-side console messages in debug mode.
    • ๐Ÿ›  [Puppeteer] Fixed closing sessions in restart:false mode for multi-session mode.
    • ๐Ÿ›  [Protractor] Fixed grabPopupText to not throw error popup is not opened.
    • ๐Ÿ“š [Protractor] Added info on using 'direct' Protractor driver to helper documentation by @xt1.
    • [WebDriverIO] Added a list of all special keys to WebDriverIO helper by @davertmik and @xt1.
    • ๐Ÿ‘Œ Improved TypeScript definitions generator by @xt1
  • v1.3.0 Changes

    Basic feature file:

    Feature: Business rules
      In order to achieve my goals
      As a persona
      I want to be able to interact with a system
      Scenario: do anything in my life
        Given I need to open Google

    Step definition:

    const I = actor();
    Given('I need to open Google', () => {

    โš™ Run it with --features --steps flag:

    codeceptjs run --steps --features

    • Brekaing Chnage run command now uses relative path + test name to run exactly one test file.

    ๐Ÿšš Previous behavior (removed):

    codeceptjs run basic_test.js

    โœ… Current behavior (relative path to config + a test name)

    codeceptjs run tests/basic_test.js

    โœ… This change allows using auto-completion when running a specific test.

    • Nested steps output enabled for page objects.
      • to see high-level steps only run tests with --steps flag.
      • to see PageObjects implementation run tests with --debug.
    • โšก๏ธ PageObjects simplified to remove _init() extra method. Try updated generators and see updated guide.
    • [Puppeteer] Multiple sessions enabled. Requires Puppeteer >= 1.5
    • [Puppeteer] Stability improvement. Waits for for load event on page load. This strategy can be changed in config:
      • waitForNavigation config option introduced. Possible options: load, domcontentloaded, networkidle0, networkidle2. See Puppeteer API
      • getPageTimeout config option to set maximum navigation time in milliseconds. Default is 30 seconds.
      • waitForNavigation method added. Explicitly waits for navigation to be finished.
    • [WebDriverIO][Protractor][Puppeteer][Nightmare] Possible BC grabTextFrom unified. Return a text for single matched element and an array of texts for multiple elements.
    • ๐Ÿ›  [Puppeteer]Fixed resizeWindow by @sergejkaravajnij
    • [WebDriverIO][Protractor][Puppeteer][Nightmare] waitForFunction added. Waits for client-side JavaScript function to return true by @GREENpoint.
    • ๐Ÿ—„ [Puppeteer] waitUntil deprecated in favor of waitForFunction.
    • โž• Added filter function to DataTable.
    • Send non-nested array of files to custom parallel execution chunking by @mikecbrant.
    • ๐Ÿ›  Fixed invalid output directory path for run-multiple by @mikecbrant.
    • โฑ [WebDriverIO] waitUntil timeout accepts time in seconds (as all other wait* functions). Fix by @truesrc.
    • ๐Ÿ‘€ [Nightmare] Fixed grabNumberOfVisibleElements to work similarly to seeElement. Thx to @stefanschenk and Jinbo Jinboson.
    • ๐Ÿ›  [Protractor] Fixed alert handling error with message 'no such alert' by @truesrc.
  • v1.2.1 Changes

    • ๐Ÿ›  Fixed running I.retry() on multiple steps.
    • ๐Ÿ›  Fixed parallel execution wih chunks.
    • ๐Ÿ›  [Puppeteer] Fixed grabNumberOfVisibleElements to return 0 instead of throwing error if no elements are found.
  • v1.2.0 Changes

    • โœ… [WebDriverIO][Protractor]Multiple Sessions. Run several browser sessions in one test. Introduced session command, which opens additional browser window and closes it after a test.
    Scenario('run in different browsers', (I) => {
      session('john', () => {
    • โœ… Parallel Execution by @sveneisenschmidt. Run tests in parallel specifying number of chunks:
    "multiple": {
      "parallel": {
        // run in 2 processes
        "chunks": 2,
        // run all tests in chrome
        "browsers": ["chrome"]
    • ๐Ÿ— Locator Builder. Write complex locators with simplest API combining CSS and XPath:
    // select 'Edit' link inside 2nd row of a table
    • โšก๏ธ Dynamic configuration to update helpers config per test or per suite.
    • โž• Added event.test.finished which fires synchronously for both failed and passed tests.
    • ๐Ÿ‘€ [WebDriverIO][Protractor][Nightmare][Puppeteer] Full page screenshots on failure disabled by default. See [issue#1600. You can enabled them with fullPageScreenshots: true, however they may work unstable in Selenium.
    • ๐Ÿ“š within blocks can return values. See updated documentation.
    • โœ‚ Removed doublt call to _init in helpers. Fixes issue #1036
    • โž• Added scenario and feature configuration via fluent API:
    Scenario('user can order in firefox', (I) => {
      // see dynamic configuration
    }).config({ browser: 'firefox' })
    Scenario('this test should throw error', (I) => {
      // I.amOnPage
    }).throws(new Error);
  • v1.1.8 Changes

    • ๐Ÿ›  Fixed generating TypeScript definitions with codeceptjs def.
    • โž• Added Chinese translation ("zh-CN" and "zh-TW") by @TechQuery.
    • ๐Ÿ›  Fixed running tests from a different folder specified by -c option.
    • ๐Ÿ‘ [Puppeteer] Added support for hash handling in URL by @gavoja.
    • ๐Ÿ‘€ [Puppeteer] Fixed setting viewport size by @gavoja. See Puppeteer issue
  • v1.1.7 Changes

    • โšก๏ธ Docker Image updateed. See updated reference:
      • codeceptjs package is mounted as /codecept insde container
      • tests directory is expected to be mounted as /tests
      • codeceptjs global runner added (symlink to /codecept/bin/codecept.js)
    • [Protractor] Functions added by @reubenmiller:
      • _locateCheckable (only available from other helpers)
      • _locateClickable (only available from other helpers)
      • _locateFields (only available from other helpers)
      • acceptPopup
      • cancelPopup
      • dragAndDrop
      • grabBrowserLogs
      • grabCssPropertyFrom
      • grabHTMLFrom
      • grabNumberOfVisibleElements
      • grabPageScrollPosition (new)
      • rightClick
      • scrollPageToBottom
      • scrollPageToTop
      • scrollTo
      • seeAttributesOnElements
      • seeCssPropertiesOnElements
      • seeInPopup
      • seeNumberOfVisibleElements
      • switchTo
      • waitForEnabled
      • waitForValue
      • waitInUrl
      • waitNumberOfVisibleElements
      • waitToHide
      • waitUntil
      • waitUrlEquals
    • [Nightmare] added:
      • grabPageScrollPosition (new)
      • seeNumberOfVisibleElements
      • waitToHide
    • [Puppeteer] added:
      • grabPageScrollPosition (new)
    • [WebDriverIO] added"
      • grabPageScrollPosition (new)
    • ๐Ÿ›  [Puppeteer] Fixed running wait* functions without setting sec parameter.
    • ๐Ÿ›  [Puppeteer][Protractor] Fixed bug with when using an object selector with the xpath property. By @reubenmiller
    • ๐Ÿ›  [WebDriverIO][Protractor][Nightmare][Puppeteer] Fixed I.switchTo(0) and I.scrollTo(100, 100) api inconsistencies between helpers.
    • ๐Ÿ‘€ [Protractor] Fixing bug when seeAttributesOnElements and seeCssPropertiesOnElement were incorrectly passing when the attributes/properties did not match by @reubenmiller
    • [WebDriverIO] Use inbuilt dragAndDrop function (still doesn't work in Firefox). By @reubenmiller
    • ๐Ÿ‘Œ Support for Nightmare 3.0
    • โœ… Enable glob patterns in config.test / Codecept.loadTests by @sveneisenschmidt
    • โœ… Enable overriding of config.tests for run-multiple by @sveneisenschmidt
  • v1.1.6 Changes

    • โž• Added support for async I => functions syntax in Scenario by @APshenkin
    • ๐Ÿšš [WebDriverIO][Protractor][Puppeteer][Nightmare] waitForInvisible waits for element to hide or to be removed from page. By @reubenmiller
    • [Protractor][Puppeteer][Nightmare] Added grabCurrentUrl function. By @reubenmiller
    • ๐Ÿ—„ [WebDriverIO] grabBrowserUrl deprecated in favor of grabCurrentUrl to unify the API.
    • [Nightmare] Improved element visibility detection by @reubenmiller
    • [Puppeteer] Fixing function calls when clearing the cookies and localstorage. By @reubenmiller
    • [Puppeteer] Added waitForEnabled, waitForValue and waitNumberOfVisibleElements methods by @reubenmiller
    • ๐Ÿ›  [WebDriverIO] Fixed grabNumberOfVisibleElements to return 0 when no visible elements are on page. By @michaltrunek
    • Helpers API improvements (by @reubenmiller)
      • _passed hook runs after a test passed successfully
      • _failed hook runs on a failed test
    • Hooks API. New events added by @reubenmiller:
      • event.all.before - executed before all tests
      • event.all.after - executed after all tests
      • event.multiple.before - executed before all processes in run-multiple
      • event.multiple.after - executed after all processes in run-multiple
    • Multiple execution
    • ๐Ÿ‘ Allow AfterSuite and After test hooks to be defined after the first Scenario. By @reubenmiller
    • ๐Ÿ’ป [Nightmare] Prevent I.amOnpage navigation if the browser is already at the given url
    • Multiple-Run: Added new bootstrapAll and teardownAll hooks to be executed before and after all processes
    • codeceptjs def command accepts --config option. By @reubenmiller
  • v1.1.5 Changes

    • [Puppeteer] Rerun steps failed due to "Cannot find context with specified id" Error.
    • โž• Added syntax to retry a single step:
    // retry action once on failure
    // retry action 3 times on failure
    // retry action 3 times waiting for 0.1 second before next try
    I.retry({ retries: 3, minTimeout: 100 }).see('Hello');
    // retry action 3 times waiting no more than 3 seconds for last retry
    I.retry({ retries: 3, maxTimeout: 3000 }).see('Hello');
    // retry 2 times if error with message 'Node not visible' happens
      retries: 2,
      when: err => err.message === 'Node not visible'
    • ๐Ÿ‘€ Scenario().injectDependencies added to dynamically add objects into DI container by @Apshenkin. See Dependency Injection section in PageObjects.
    • ๐Ÿ›  Fixed using async/await functions inside within
    • ๐Ÿ—„ [WebDriverIO][Protractor][Puppeteer][Nightmare] waitUntilExists deprecated in favor of waitForElement
    • ๐Ÿ—„ [WebDriverIO][Protractor] waitForStalenessOf deprecated in favor of waitForDetached
    • [WebDriverIO][Protractor][Puppeteer][Nightmare] waitForDetached added
    • ๐Ÿ‘€ [Nightmare] Added I.seeNumberOfElements() by @pmoncadaisla
    • [Nightmare] Load blank page when starting nightmare so that the .evaluate function will work if _failed/saveScreenshot is triggered by @reubenmiller
    • ๐Ÿ›  Fixed using plain arrays for data driven tests by @reubenmiller
    • 0๏ธโƒฃ [Puppeteer] Use default tab instead of opening a new tab when starting the browser by @reubenmiller
    • [Puppeteer] Added grabNumberOfTabs function by @reubenmiller
    • [Puppeteer] Add ability to set user-agent by @abidhahmed
    • ๐Ÿ’ป [Puppeteer] Add keepCookies and keepBrowserState @abidhahmed
    • [Puppeteer] Clear value attribute instead of innerhtml for TEXTAREA by @reubenmiller
    • ๐Ÿ›ฐ [REST] fixed sending string payload by @michaltrunek
    • ๐Ÿ›  Fixed unhandled rejection in async/await tests by @APshenkin
  • v1.1.4 Changes

    • โœ‚ Removed yarn call in package.json
    • ๐Ÿ›  Fixed console.log in Puppeteer by @othree
    • [Appium] runOnAndroid and runOnIOS can receive a function to check capabilities dynamically:
    I.runOnAndroid(caps => caps.platformVersion >= 7, () => {
      // run code only on Android 7+