Skip to content

Latest commit

 

History

History
1188 lines (962 loc) · 63 KB

CHANGELOG.md

File metadata and controls

1188 lines (962 loc) · 63 KB

Changelog

Tags:

  • 💥 [Breaking Change]
  • 👓 [Spec Compliancy]
  • 🚀 [New Feature]
  • 🐛 [Bug Fix]
  • 📝 [Documentation]
  • 🏠 [Internal]
  • 💅 [Polish]

Note: Gaps between patch versions are faulty, broken or test releases.

See CHANGELOG - v4.


5.6.2 (2019-02-22)

🐛 Bug Fix

📝 Documentation

Committers: 3

5.6.1 (2019-02-22)

🐛 Bug Fix

  • webdriverio

💅 Polish

  • webdriverio

📝 Documentation

Committers: 2

5.6.0 (2019-02-21)

💅 Polish

📝 Documentation

  • wdio-sync, webdriverio

🏠 Internal

Committers: 3

5.5.0 (2019-02-20)

👓 Spec Compliancy

🚀 New Feature

🐛 Bug Fix

Committers: 3

5.4.20 (2019-02-20)

👓 Spec Compliancy

🐛 Bug Fix

  • wdio-cli, wdio-config, wdio-runner, wdio-smoke-test-service, wdio-utils

💅 Polish

📝 Documentation

🏠 Internal

Committers: 4

5.4.19 (2019-02-19)

💅 Polish

  • wdio-sync
  • webdriverio

📝 Documentation

  • webdriverio

Committers: 2

5.4.18 (2019-02-18)

👓 Spec Compliancy

🐛 Bug Fix

  • webdriver

💅 Polish

  • webdriverio
  • wdio-allure-reporter, wdio-mocha-framework
    • #3536 wdio-allure-reporter: capture before each and all hooks (@mgrybyk)
  • webdriver

📝 Documentation

🏠 Internal

  • webdriver, webdriverio
  • wdio-cli, wdio-config, wdio-junit-reporter

Committers: 9

5.4.16 (2019-02-07)

🐛 Bug Fix

  • wdio-allure-reporter

📝 Documentation

Committers: 3

5.4.15 (2019-02-06)

👓 Spec Compliancy

  • webdriver
    • #3511 webdriver: hack to make chrome support element.saveScreenshot() (@abjerstedt)

💅 Polish

  • wdio-allure-reporter, wdio-reporter
    • #3510 wdio-reporter: create outputDir directory if does not exist (@klamping)

Committers: 2

5.4.14 (2019-02-05)

🐛 Bug Fix

📝 Documentation

  • Other
  • wdio-jasmine-framework, wdio-mocha-framework, wdio-selenium-standalone-service

🏠 Internal

  • wdio-cli

Committers: 5

5.4.13 (2019-02-02)

🚀 New Feature

  • wdio-cli, wdio-config

🐛 Bug Fix

Committers: 2

5.4.12 (2019-02-02)

🐛 Bug Fix

Committers: 1

5.4.11 (2019-02-02)

💅 Polish

  • wdio-browserstack-service, wdio-config

Committers: 1

5.4.10 (2019-02-02)

🐛 Bug Fix

  • wdio-cli
    • #3422 Fix handling of yarn-managed node_modules (@ccope)

💅 Polish

📝 Documentation

  • Other
  • wdio-jasmine-framework, wdio-mocha-framework, wdio-selenium-standalone-service
  • webdriverio
    • #3478 changed browser.close() to browser.closeWindow() (@balukov)

🏠 Internal

Committers: 8

5.4.9 (2019-01-31)

🐛 Bug Fix

📝 Documentation

Committers: 2

5.4.8 (2019-01-29)

🐛 Bug Fix

💅 Polish

📝 Documentation

Committers: 7

5.4.7 (2019-01-26)

👓 Spec Compliancy

Committers: 1

5.4.6 (2019-01-26)

💅 Polish

  • wdio-cli, wdio-interface, webdriverio
  • wdio-logger
    • #3427 change logger imports/exports for optimized webpack bundling (@jlipps)

Committers: 2

5.4.5 (2019-01-25)

💅 Polish

Committers: 1

5.4.4 (2019-01-25)

🏠 Internal

Committers: 1

5.4.3 (2019-01-24)

🐛 Bug Fix

💅 Polish

📝 Documentation

Committers: 2

5.4.2 (2019-01-24)

🐛 Bug Fix

  • wdio-config, wdio-repl, wdio-sync, webdriver, webdriverio

📝 Documentation

Committers: 4

5.4.1 (2019-01-23)

💅 Polish

  • wdio-logger
    • #3398 guard against bad console method access in web version of logger (@jlipps)

Committers: 1

5.4.0 (2019-01-23)

👓 Spec Compliancy

🐛 Bug Fix

📝 Documentation

🏠 Internal

Committers: 9

5.3.5 (2019-01-18)

💅 Polish

Committers: 1

5.3.4 (2019-01-18)

🐛 Bug Fix

💅 Polish

  • wdio-browserstack-service

📝 Documentation

Committers: 6

5.3.3 (2019-01-16)

👓 Spec Compliancy

  • webdriverio
    • #3340 Fix error message in webdriverio constants (@ablok)

🐛 Bug Fix

  • webdriverio
    • #3349 missing lodash in dependencies require('lodash') node_modules/webdriverio/build/commands/element/$.js (@jimmielemontgomery)
  • wdio-local-runner, wdio-runner, wdio-webdriver-mock-service, webdriverio
  • wdio-local-runner

💅 Polish

📝 Documentation

Committers: 5

5.3.2 (2019-01-15)

🐛 Bug Fix

Committers: 1

5.3.1 (2019-01-15)

👓 Spec Compliancy

  • webdriverio
    • #3331 webdriverio: Fixes webdriverio constants and adds tests for services, execArgv and capabilities (@ablok)

🐛 Bug Fix

💅 Polish

  • wdio-allure-reporter
    • #3321 wdio-allure-reporter: make step attachments optional (@sskorol)
  • webdriver, webdriverio

📝 Documentation

  • wdio-firefox-profile-service, webdriver, webdriverio
  • webdriverio
    • #3330 Mention isSelected for checkbox and radio inputs (@kimek)
    • #3326 webdriverio: Changed setCookie => setCookies in examples (@ayoolaao)
  • wdio-cli, wdio-config, wdio-junit-reporter, webdriverio
  • Other
  • wdio-allure-reporter
    • #3247 README fix: move addAttachment args into a correct place (@vgrigoruk)

Committers: 10

5.3.0 (2019-01-11)

👓 Spec Compliancy

🐛 Bug Fix

📝 Documentation

Committers: 3

5.2.8 (2019-01-10)

🐛 Bug Fix

💅 Polish

📝 Documentation

🏠 Internal

  • #3284 package.json - Fixed Jest's testMatch pattern to also work in Windows (@urig)

Committers: 4

5.2.7 (2019-01-09)

🐛 Bug Fix

  • wdio-cli, wdio-webdriver-mock-service, webdriver, webdriverio
    • #3271 Fix instance prototype and enable custom commands for elements (@Gilad-WT)

💅 Polish

  • webdriverio
    • #3268 webdriverio: utils.js - using "name" in element locator cause an InvalidSelector Error to be … (@simonwilson1985)

📝 Documentation

Committers: 4

5.2.6 (2019-01-08)

💅 Polish

  • webdriverio
    • #3276 webdriverio: waitForDisplayed() now inherits isDisplayed() logic (@abjerstedt)

Committers: 1

5.2.5 (2019-01-07)

🐛 Bug Fix

  • wdio-cli, wdio-sauce-service, wdio-testingbot-service, webdriver
  • webdriverio
    • #3273 webdriverio: fixing waitForDisplayed to immediately return false (@abjerstedt)

💅 Polish

  • wdio-webdriver-mock-service, webdriverio
    • #3244 webdriverio: isDisplayed fix to return false on non existing elements (@abjerstedt)

📝 Documentation

Committers: 2

5.2.4 (2019-01-07)

🐛 Bug Fix

  • webdriver
    • #3266 Properly extend base protocol with extension command definitions. (@martomo)

Committers: 1

5.2.3 (2019-01-06)

🐛 Bug Fix

  • wdio-jasmine-framework
    • #3249 Jasmine Framework improperly configures test randomization (@b-smets)

💅 Polish

  • webdriverio
  • wdio-reporter

📝 Documentation

Committers: 6

5.2.2 (2019-01-04)

👓 Spec Compliancy

  • webdriver
    • #3250 Update other commands which allow/expect 'null' as value. (@martomo)

📝 Documentation

  • #3227 Undefined CSS classes for optional command parameters (@cuki)

Committers: 2

5.2.1 (2019-01-04)

🐛 Bug Fix

💅 Polish

  • webdriver
    • #3239 Unable pass null value to switchToFrame command for WebDriver (@martomo)

📝 Documentation

🏠 Internal

Committers: 6

5.2.0 (2019-01-03)

🚀 New Feature

  • webdriver, webdriverio
    • #3215 Properly implement 'setTimeout' function and /timeouts endpoints (@martomo)

🐛 Bug Fix

💅 Polish

  • webdriver, webdriverio
    • #3225 Improve command definitions for available protocols (@martomo)
  • webdriver
    • #3216 Setting of just window position or size instead of both using 'setWindowRect' (@martomo)

📝 Documentation

🏠 Internal

Committers: 4

5.1.2 (2018-12-30)

🐛 Bug Fix

Committers: 1

5.1.1 (2018-12-30)

🐛 Bug Fix

  • webdriver
    • #3208 Fix bug where Geckodriver requires POST requests to have a valid JSON body (@klipstein)

📝 Documentation

Committers: 3

5.1.0 (2018-12-28)

🚀 New Feature

🐛 Bug Fix

💅 Polish

  • webdriverio
  • webdriver, webdriverio

📝 Documentation

  • wdio-cli
  • Other
  • webdriverio
  • wdio-cli, wdio-config, wdio-junit-reporter, wdio-local-runner, wdio-reporter, wdio-runner, webdriverio

🏠 Internal

Committers: 4

5.0.3 (2018-12-23)

🐛 Bug Fix

  • wdio-cli, wdio-config, wdio-interface, wdio-local-runner, wdio-runner, wdio-webdriver-mock-service, webdriverio

🏠 Internal

Committers: 2

v5.0.2 (2018-12-22)

📝 Documentation

Committers: 2

v5.0.1 (2018-12-21)

🐛 Bug Fix

  • wdio-runner

📝 Documentation

Committers: 2

v5.0.0 (2018-12-20)

This version comes with a variety of technical changes that might affect the functionality of 3rd party WebdriverIO packages from the community. If such a package causes problems after the update, please raise an issue in the repository of that package and not in this repository. You can find a list of officially maintained packages here.

💥 Breaking Change

  • moved wdio cli command from webdriverio package to @wdio/cli

  • commands are scoped to browser and element - no selector property on commands anymore

    // v4
    browser.click('#myElem')
    // v5 and upwards
    const elem = $('#myElem')
    elem.click()
  • no command chaining anymore (in standalone and wdio mode)

    // v4 (standalone/async mode)
    browser
      .url('https://duckduckgo.com/')
      .setValue('#search_form_input_homepage', 'WebdriverIO')
      // ...
    // v5 (standalone/async mode)
    await browser.url('https://duckduckgo.com/')
    const elem = await browser.$('#search_form_input_homepage')
    await elem.click()
    await elem.setValue('WebdriverIO')
  • every protocol command returns a value property instead of raw driver response

    // v4
    const result = browser.execute(() => 1 + 1)
    console.log(result)
    // outputs:
    // { sessionId: '02aee149a1a421b81598ff2a3b90e33d',
    //   value: 2,
    //   _status: 0 }
    // v5
    const result = browser.execute(() => 1 + 1)
    console.log(result) // outputs: 2
  • the remote and multiremote methods to initiate a driver instance now also start the driver session and therefore return a promise (no init command anymore)

    // v4
    import { remote } from 'webdriverio'
    const driver = remote({ ... })
    driver.init().url('https://webdriver.io').end()
    // v5
    import { remote } from 'webdriverio'
    const driver = await remote({ ... })
    await driver.url('https://webdriver.io')
    await driver.deleteSession()
  • command changes: over the years WebdriverIO added more and more commands for different automation protocols without applying a pattern to it which resulted in having a bunch of duplication and inconsistent naming, even though the list looks exhausting, most of the commands that have changed were used internally

    • renamed commands:
      • isVisibleisDisplayed
      • isVisibleWithinViewportisDisplayedInViewport
      • waitForVisiblewaitForDisplayed
      • clearElementclearValue
      • moveToObjectmoveTo (element scope only)
      • setCookie, getCookie, deleteCookiesetCookies, getCookies, deleteCookies
      • getElementSizegetSize
      • source, getSourcegetPageSource
      • titlegetTitle
      • actionsperformActions (WebDriver protocol only)
      • alertAcceptacceptAlert
      • alertDismissdismissAlert
      • alertTextgetAlertText, sendAlertText
      • applicationCacheStatusgetApplicationCacheStatus (JsonWireProtocol only)
      • cookiegetAllCookies, addCookie, deleteCookie
      • getCssPropertygetCSSProperty
      • elementfindElement
      • elementsfindElements
      • elementActivegetActiveElement
      • elementIdAttributegetElementAttribute
      • elementIdClearelementClear
      • elementIdClickelementClick
      • elementIdCssPropertygetElementCSSValue
      • elementIdDisplayedisElementDisplayed
      • elementIdElementfindElementFromElement
      • elementIdElementsfindElementsFromElement
      • elementIdEnabledisElementEnabled
      • elementIdLocationgetElementLocation
      • elementIdLocationInViewgetElementLocationInView (JsonWireProtocol only)
      • elementIdNamegetElementTagName
      • elementIdPropertygetElementProperty
      • elementIdRectgetElementRect
      • elementIdScreenshottakeElementScreenshot
      • elementIdSelectedisElementSelected
      • elementIdSizegetElementSize (JsonWireProtocol only)
      • elementIdTextgetElementText
      • elementIdValueelementSendKeys
      • frameswitchToFrame
      • frameParentswitchToParentFrame
      • timeoutsAsyncScript, timeoutsImplicitWaitsetAsyncTimeout, setImplicitTimeout (JsonWireProtocol only)
      • getLocationInViewgetElementLocationInView (JsonWireProtocol only)
      • imeActivateactivateIME (JsonWireProtocol only)
      • imeActivatedisIMEActivated (JsonWireProtocol only)
      • imeActiveEnginegetActiveEngine (JsonWireProtocol only)
      • imeAvailableEnginesgetAvailableEngines (JsonWireProtocol only)
      • imeDeactivateddeactivateIME (JsonWireProtocol only)
      • localStoragegetLocalStorage, setLocalStorage, clearLocalStorage, getLocalStorageItem, deleteLocalStorageItem (JsonWireProtocol only)
      • localStorageSizegetLocalStorageSize (JsonWireProtocol only)
      • sessionStoragegetSessionStorage, setSessionStorage, clearSessionStorage, getSessionStorageItem, deleteSessionStorageItem (JsonWireProtocol only)
      • sessionStorageSizegetSessionStorageSize (JsonWireProtocol only)
      • locationgetElementLocation
      • loggetLogs (JsonWireProtocol only)
      • logTypesgetLogTypes (JsonWireProtocol only)
      • screenshottakeScreenshot
      • sessiongetSession, deleteSession (JsonWireProtocol only)
      • sessionsgetSessions
      • submitelementSubmit
      • timeoutsgetTimeouts, setTimeouts
      • window, switchToWindowswitchWindow
      • windowHandlecloseWindow, getWindowHandle
      • windowHandlesgetWindowHandles
      • windowHandleFullscreenfullscreenWindow
      • windowHandleMaximizemaximizeWindow
      • windowHandlePositionsetWindowPosition, getWindowPosition (JsonWireProtocol only), setWindowRect, getWindowRect (WebDriver protocol only)
      • windowHandleSizesetWindowSize, getWindowSize (JsonWireProtocol only), setWindowRect, getWindowRect (WebDriver protocol only)
      • hasFocusisFocused
      • enddeleteSession
      • reloadreloadSession
      • scrollscrollIntoView
      • contextgetContext, switchContext
      • contextsgetContexts
      • currentActivitygetCurrentActivity
      • deviceKeyEventsendKeyEvent
      • getAppStringsgetStrings
      • hideDeviceKeyboardhideKeyboard
      • holdlongPressKeyCode
      • launchlaunchApp
      • performMultiActionmultiTouchPerform
      • pressKeycodepressKeyCode
      • rotaterotateDevice
      • setImmediateValuesetValueImmediate
      • settingsgetSettings, updateSettings
      • stringsgetStrings
      • toggleTouchIdEnrollmenttoggleEnrollTouchId
    • removed commands (Note: there are chances that removed commands will come back if their use case scenario seem to be reasonable.):
      • doDoubleClick, doubleClick - replace with double click command or performActions command
      • dragAndDrop - replace with performActions command
      • leftClick, middleClick, rightClick - replace with performActions command
      • selectByValue - replace with selectByAttribute('value')
      • selectorExecute, selectorExecuteAsync - replace with execute(elem)
      • submit - replace by clicking on submit button
      • getCurrentDeviceActivity - replace by getCurrentActivity
      • release - replace by touchAction command
      • swipe, swipeDown, swipeLeft, swipeRight, swipeUp - replace by touchAction command
      • performTouchAction - replace by touchPerform
      • with no replacements: init, buttonPress, file, chooseFile, uploadFile, endAll, getCommandHistory, waitForSelected, waitForText, waitForValue, getGridNodeDetails, gridProxyDetails, gridTestSession, hold
    • new commands:
      • WebDriver / JsonWireProtocol: minimizeWindow
      • Appium: startRecordingScreen, stopRecordingScreen, isKeyboardShown, getSystemBars, getDisplayDensity, endCoverage, replaceValue, receiveAsyncResponse, gsmCall, gsmSignal, gsmVoice, sendSms, fingerPrint
  • adding custom commands are scoped to the prototype they are being added to

    // v4
    browser.addCommand('myCommand', () => { ... })
    const elem = $('myElem')
    console.log(typeof browser.myCommand) // outputs "function"
    console.log(typeof elem.myCommand) // outputs "function"
    // v5
    browser.addCommand('myCommand', () => { ... })
    const elem = $('myElem')
    console.log(typeof browser.myCommand) // outputs "function"
    console.log(typeof elem.myCommand) // outputs "undefined"
    elem.addCommand('myElemCommand', () => { ... })
    console.log(typeof elem.myElemCommand) // outputs "function"
    const elem2 = $('myOtherElem')
    console.log(typeof elem2.myElemCommand) // outputs "undefined"
  • spec and suite cli arguments are now passed as an array, e.g.

    // v4
    ./node_modules/.bin/wdio wdio.conf.js --spec ./tests/foobar.js,./tests/baz.js
    
    ./node_modules/.bin/wdio wdio.conf.js --suite FooBar,BarBaz
    
    ./node_modules/.bin/wdio wdio.conf.js --suite FooBar
    // v5
    ./node_modules/.bin/wdio wdio.conf.js --spec ./tests/foobar.js ./tests/baz.js
    
    ./node_modules/.bin/wdio wdio.conf.js --suite FooBar BarBaz
    
    ./node_modules/.bin/wdio wdio.conf.js --suite FooBar
  • custom configuration for services or reporters are now directly applied to the config list, e.g.

    // ...
    reporters: [
      'spec',
      [
        'junit',
        { outputDir: __dirname + '/junit_logs' }
      ]
    ],
    // ...

👓 Spec Compliancy

  • implemented parameter assertions for protocol commands
  • full W3C WebDriver compliancy
  • full Appium and Mobile JSONWire Protocol compliancy
  • simplified protocol command maintenance by defining commands, their parameters and response values within simple json constructs
  • instead of switching protocol within a running session, WebdriverIO now determines the supported protocol by the driver based on the create session response

🚀 New Feature

  • new package @wdio/applitools-service for simple visual regression testing with Applitools
  • new package eslint-plugin-wdio for WebdriverIO specific linting rules for ESLint
  • @wdio/devtools-service now with frontend performance testing capabilities (see example)
  • new region option to simply run tests on SauceLabs in different datacenters
  • debug command now allows to connect the runner with the Chrome DevTools application for more indepth debugging
  • decoupling of @wdio/sync package from framework adapters so that there is no need to install fibers when you want to run your commands with async/await
  • autofetching of all provides log types
  • auto retry mechansim for all command requests
  • auto refetch mechanism for stale elements
  • simplified reattachment to existing sessions with attach functionality
  • integrated and auto maintained TypeScript definitions
  • wdio testrunner fails if no spec files were found

🐛 Bug Fix

  • fixed loss of scope when chaining elements (e.g. $$('div')[2].$('span').getHTML())
  • browser scope with now updated capabilities (browser.capabilities)
  • improved watch functionality allows to rerun tests without starting a new session all over again
  • fixed problems with addCommand in multiremote

📝 Documentation

  • brand new documentation page based on the Docusaurus framework
    • written in a modern web framework called React
    • completely responsive with full support for mobile viewports
  • included blog for WebdriverIO related news and article
  • fixed links to edit certain documentation pages
  • documentation page served via HTTPS per default

🏠 Internal

  • complete rearchitecturing of the whole project into a monorepo
  • moved all protocol commands into a webdriver base package
  • project sub packages are now released within the @wdio NPM organization
  • renamed services, reporters and other internal packages (e.g. wdio-sauce-service@wdio/sauce-service)
  • removed all e2e tests from project to run as unit tests using Jest with a coverage of ~96%
  • update to Babel v7 (latest) as well as various of other dependency updates with security fixes
  • CPU and Memory improvements by reducing amount of IPC calls

💅 Polish