Next-gen browser and mobile automation test framework for Node.js

Overview

WebdriverIO

Next-gen browser and mobile automation test framework for Node.js.

Build Status LTS v5 Build Status CodeCov Gitter Issue Resolution time Open issues


Homepage | Developer Guide | API Reference | Contribute | Changelog | Roadmap


WebdriverIO is a test automation framework that allows you to run tests based on the Webdriver protocol and Appium automation technology. It provides support for your favorite BDD/TDD test framework and will run your tests locally or in the cloud using Sauce Labs, BrowserStack, TestingBot or LambdaTest.

Contributing

You like WebdriverIO and want to help making it better? Awesome! Have a look into our Contributor Guide and check out our Contributor Documentation to get started with setting up the repo.

If you're looking for issues to help out with, check out the issues labelled "good first pick". You can also reach out in our Gitter Channel if you have question on where to start contributing.

WebdriverIO for Enterprise

Available as part of the Tidelift Subscription.

The maintainers of WebdriverIO and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. Learn more.

Packages

Core

  • webdriver - A Node.js bindings implementation for the W3C WebDriver and Mobile JSONWire Protocol
  • devtools - A Chrome DevTools protocol binding that maps WebDriver commands into Chrome DevTools commands using Puppeteer
  • webdriverio - Next-gen browser and mobile automation test framework for Node.js
  • @wdio/cli - A WebdriverIO testrunner command line interface

Helper

  • @wdio/config - A helper utility to parse and validate WebdriverIO options
  • @wdio/logger - A helper utility for logging of WebdriverIO packages
  • @wdio/protocols - Utility package providing information about automation protocols
  • @wdio/repl - A WDIO helper utility to provide a repl interface for WebdriverIO
  • @wdio/reporter - A WebdriverIO utility to help reporting all events
  • @wdio/runner - A WebdriverIO service that runs tests in arbitrary environments
  • @wdio/sync - A WebdriverIO plugin. Helper module to run WebdriverIO commands synchronously
  • @wdio/utils - A WDIO helper utility to provide several utility functions used across the project

Reporter

Services

Runner

Framework Adapters

Others

Project Governance

This project is maintained by awesome people following a common set of rules and treating each other with respect and appreciation.

License

MIT

FOSSA Status

Badge

Show the world you're using webdriver.io → tested with webdriverio

GitHub markup
[![tested with webdriver.io](https://img.shields.io/badge/tested%20with-webdriver.io-%23ea5906)](https://webdriver.io/)
HTML
<a href="https://webdriver.io/">
    <img alt="WebdriverIO" src="https://img.shields.io/badge/tested%20with-webdriver.io-%23ea5906">
</a>
Comments
  • drag and drop bug

    drag and drop bug

    Environment (please complete the following information):

    • WebdriverIO version: 5.10.7
    • Mode: WDIO Test Runner
    • Node.js version: e.g. 8.16.0
    • NPM version: 6.4.1
    • Browser name and version: Chrome 75
    • Platform name and version: MacOS 10.14
    • Additional wdio packages used (if applicable): @wdio/spec reporter, @wdio/selenium-standalone service, @wdio/dot-reporter, @wdio/cli, @wdi0/mocha-framework

    Config of WebdriverIO standard, no major configurations.

    Describe the bug When using $(selector).dragAndDrop(target) The function was able to grab the selector. However the dragging and dropping is not behaving correctly. Instead of dragging and dropping on the target, it is dragging and dropping on the location of the mouse. Which defeats the purpose of dragging and dropping on the target. Looking at the dragAndDrop() function in the source code I noticed something was a bit off as well.

         /**
         * W3C way of handle the drag and drop action
         */
        return this.performActions([{
            type: 'pointer',
            id: 'finger1',
            parameters: { pointerType: 'mouse' },
            actions: [
                { type: 'pointerMove', duration: 0, x: sourceX, y: sourceY },
                { type: 'pointerDown', button: ACTION_BUTTON },
                { type: 'pause', duration: 10 }, // emulate human pause
                { type: 'pointerMove', duration, origin: 'pointer', x: targetX, y: targetY },
                { type: 'pointerUp', button: ACTION_BUTTON }
            ]
        }]).then(() => this.releaseActions())
    

    The second pointerMove is using origin pointer. So I wonder if that is what causing the dropping to happen on the mouse coordinate instead.

    To Reproduce

    1. use dragAndDrop function in your test.
    2. place your mouse somewhere from the target selector.
    3. You will notice that it will try to drag and drop the selector where the mouse is located.

    Expected behavior It should be able to drag a selector to a target selector.

    Needs Investigation help wanted 
    opened by ducle91 112
  • Port wdio-cucumber-framework

    Port wdio-cucumber-framework

    From @christian-bromann on July 7, 2018 10:21

    Questions to answer

    1. Do cucumber background steps run before or after wdio hooks? (note that they run before cucumber hooks) (source: background.feature)

    For Cucumber we have defined special hooks anyway which are the following:

    • beforeFeature
    • beforeScenario
    • beforeStep
    • afterStep
    • afterScenario
    • afterFeature

    I could imagine to add:

    • beforeBackground
    • afterBackground
    1. Is it correct to assume that there is no --exit functionality or that wdio replaces it? (source: exit.feature)

    I am not entirely sure what this option in Cucumber is.

    1. Is it correct to assume that there is no --fail-fast functionality or that wdio replaces it? (source: fail_fast.feature)

    WDIO has a bail option.

    1. Does wdio support multiple languages like cucumber? (source: language.feature)

    I think it does by applying certain cucumberOpts in the wdio config.

    1. Do wdio rerun semantics replace/invalidate the cucumber ones? (source: rerun_formatter.feature)

    This is also up to the Cucumber framework. WDIO doesn't do anything specific like this.

    1. How does the wdio rerun functionality work with the cucumber rerun functionality (reporting)? (source: step_wrapper_with_options.feature)

    It just reruns the step without reporting (besides before/after command reporting). I haven't put much thought into this as I am not a Cucumber expert.

    1. Is strict mode useable with wdio? (source: strict_mode.feature)

    What kind of strict mode?

    1. Is the high-level summary from cucumber relevant when using wdio? (source: summary_formatter.feature)

    I think yes.

    1. Is there any special reporting needed for tags functionality? (source: tagged_hooks.feature)

    Tags aren't really working with the current integration which I would love to change. Such reporting would need to be added.

    1. Do we need to cope with errors invoking cucumber (e.g. invalid world parameters) ? (source: world_parameters.feature)

    Yes.

    Copied from original issue: webdriverio/v5#82

    wdio-cucumber-framework 
    opened by christian-bromann 60
  • Init framework before browser

    Init framework before browser

    Proposed changes

    Init test framework before starting webdriver session.

    (initial) purpose

    Filter specs before webdriver session is started which is required to speedup tests execution. Starting/stopping webdriver session takes some time for browsers and takes lots of time with Appium. See https://github.com/webdriverio/webdriverio/pull/4326

    NOT a breaking change

    • Cucumber users are not affected at all. Filtering just works out of the box.
    • Feature is disabled by default for Mocha/Jasmine users to avoid breaking changes (details below)

    Feature Flags

    Added featureFlags to wdio.conf that can have specFiltering property. Example:

    // by default enabled for Cucumber users and disabled for Mocha/Jasmine users.
    featureFlags: {
        specFiltering: true
    }
    

    Spec filtering for Mocha/Jasmine users

    Only if the feature is enabled with feature flag!

    • Mocha/Jasmine users have to move all required files that interacts with browser object from mochaOpts.require to before hook
    • Mocha/Jasmine users have to move all required files like transpilers from before hook to mochaOpts.require/jasmineNodeOpts.requires

    some common cases

    • it is still possible to do something like this thanks to browser stub:
    if (browser.isMobile) {
      it(browser.capabilities.browserName + ' test', () => {})
    }
    
    • it's not possible to interact with browser in a root scope until the session is created. Code like browser.addCommand('foo', () => {}) have to be moved to helper files and called in before hook
    • If the feature is enabled but spec filtering has failed for some reason, test run proceeds as before, like there is no spec filtering. User can see more details in logs.

    jasmineNodeOpts

    Added support of built-in requires and helpers to be able to load compilers or helper files that are required to run tests.

    Flow changes

    current flow

    1. start browser
    2. run test framework: 2.1. init test framework 2.2. call before hook that expects browser object to be available 2.3. run test framework

    new flow

    1. create browser stub with capabilities and env flags (like isMobile)
    2. init test framework
    3. start browser
    4. call before hook
    5. run test framework

    acknowledgement

    • only capabilities provided by user exist in browser.capabilities if spec filtering is enabled for Mocha/Jasmine before browser session is started. As a result user won't be able to use some runtime capabilities for tests filtering, like browser.capabilities.chrome.chromedriverVersion.
    • unable to detect isW3C and isSeleniumStandalone flags before browser session is started.

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation update

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [x] implement spec filtering for cucumber
    • [x] implement spec filtering for mocha
    • [x] implement spec filtering for jasmine
    • [x] hide/change interface message about ignored spec file
    • [x] unit tests
    • [x] smoke tests
    • [x] docs

    Further comments

    I think having this feature we can think on tags management for Jasmine and Mocha https://github.com/webdriverio/webdriverio/issues/2859

    Cucumber has its own tag management system, so there is nothing to do for us

    Reviewers: @webdriverio/technical-committee

    PR: New Feature :rocket: 
    opened by mgrybyk 59
  • v5 wish list

    v5 wish list

    Do you miss a feature in WebdriverIO? Do you have any feedback how we can make it better? Let us know and help use prioritize features for a new major release!

    Discussion 
    opened by christian-bromann 58
  • Cannot find type definition file for './webdriverio-core

    Cannot find type definition file for './webdriverio-core

    Environment (please complete the following information):

    • WebdriverIO version: 5.6.3

    Describe the bug I installed latest webdriver and I am trying to compile it, TypeScript compiler rises error. Cannot find type definition file for './webdriverio-core

    opened by gitowiec 55
  • All scenarios in feature are running as of 5.16.0 even tag provided should only run 1 scenario

    All scenarios in feature are running as of 5.16.0 even tag provided should only run 1 scenario

    #4531 has caused all scenarios to run in a feature even if the tag specified is only on a single scenario in that feature.

    Environment (please complete the following information):

    • WebdriverIO version: [e.g. 4.13.2] 5.16.0 (using 5.15.2 does not present this issue)
    • Mode: [Standalone mode or WDIO Testrunner] WDIO Testrunner
    • If WDIO Testrunner, running sync/async: [e.g. sync/async] sync
    • Node.js version: [e.g. 8.11.2] 10.13.0
    • NPM version: [e.g. 5.8.0] 6.4.1
    • Browser name and version: [e.g. Chrome 68] Chrome (latest)
    • Platform name and version: [e.g. Windows 10] macOS High Sierra
    • Additional wdio packages used (if applicable): [e.g. @wdio/spec reporter, @wdio/selenium-standalone service] A lot @wdio/cucumber-framework

    Config of WebdriverIO To be provided

    Describe the bug All scenarios are run even if the tag expression only should include a single scenario.

    To Reproduce Steps to reproduce the behavior:

    • Provide a tag expression that should only run 1 scenario in a feature
    • Attempt to run the framework
    • All scenarios are executed if the feature has a single tag in it

    [Include code or an example repository that can easily be set up]

    Expected behavior Only the scenario tagged should be ran

    Log If applicable, add logs to help explain your problem. Create a gist which is a paste of your full Selenium/WebdriverIO logs, and link them here. Do not paste your full Appium logs here, as it will make this issue very long and hard to read! If you are reporting a bug, always include Selenium/WebdriverIO logs!

    Additional context Add any other context about the problem here.

    Please use the correct markdown

    Working to replicate this with cucumber-boilerplate...

    opened by mikesalvia 49
  • Way to run tests in parallel without wdio becoming a memory hog

    Way to run tests in parallel without wdio becoming a memory hog

    Is your feature request related to a problem? Please describe. We are running test against a cloud provided grid and we have enough instances to run several tests in parallel (want to reach ~100 browsers). The problem is that wdio spawns different processes with a memory footprint of around 100MB each, making it unscalable to that point inside our automation pipeline (will require around 10GB memory).

    Describe the solution you'd like I would like a way to use the webdriver.io runner that has the possibility of reusing a process for several browsers so that the cost of memory of each browser used in the pipeline. It would not necessarily mean that we are using only one process (as only one thread at a time might lead to a CPU bottleneck), but it would be nice if we could tune the amount of browsers managed by each process.

    Describe alternatives you've considered The only alternative that comes to my mind is having each process using somehow the VM capability of nodejs to bootstrap different contexts so that multiple browsers can be managed at a time. I've not look into this in so much depth, but it looks like doable just by looking at the API description.

    Performance help wanted 
    opened by alfonso-presa 46
  • Promise chain error

    Promise chain error

    Promise chain error:

    client
                .url(sid.url)
                .then(client.waitFor('.result', 5000))
                .then(client.getValue('#SSID'))
                .then(function(sid){
                     console.log('resolved', sid);  // here gets resolved ass [].length =4
                     return sid;                          // should be a SINGLE element     
                 })
    

    i guess in this last promise if the would be 10 calls to webdriverio the resolved promise would have array of 10 elements.

    right now i workaround this by flattening an array.

    respSid = _.isArray(respSid) ? _.first(respSid) : respSid;
    

    help is very much appreciated

    Bug 🐛 Project Related v6 
    opened by syzer 44
  • Implement a request queue to avoid having to many parallel requests

    Implement a request queue to avoid having to many parallel requests

    The problem

    The Selenium server / driver can only handle a specific amount of parallel requests. If a user would run a command like browser.getText("div") on a page with e.g. 200 div elements, the client would try to make 200 requests at the same time. This will cause an java.net.ConnectException: Connection refused: connect error because the driver won't be able to handle that many parallel requests. We need a queue abstraction for making requests so that we can limit the amount of max requests we do at the same time.

    Enhancement 
    opened by christian-bromann 43
  • setValue() doesn't clear input before setting new value

    setValue() doesn't clear input before setting new value

    In my test case I have a step where new value is set to a non empty input (with type number). According to webdriverIO API, the setValue method should clear an input at first and then should type a new value. But in my case, setValue appends new value to existing one.

    I'm using webdriverIO 3.4.0 with Selenium standalone server 2.52.0 and Firefox 44.0.2. The forms in my application under test are created with React.js library.

    Bug 🐛 Question Selenium Related 
    opened by adolatowska 43
  • Possibility to configure test spec process spawning?

    Possibility to configure test spec process spawning?

    The problem

    According to https://github.com/webdriverio/webdriverio/issues/1106#issuecomment-184728530 each test spec gets executed in a single child process. We have currently 101 individual .feature files (we are using Cucumber) and cannot put them into one big file. When we launch our test script, my Selenium Server is trying to spawn 101 process, this results in a very heavy lag and I need to kill the processes.

    Is there a way to configure this behaviour? Do we need to adjust our wdio.conf?

    Environment

    updated on 07/05/16

    • WebdriverIO version: 4.1.1
    • Node.js version: 4.4.6
    • Selenium Server 2.53.0
    • using wdio testrunner
    • running synchronous or asnychronous tests: does not matter
    • Additional wdio packages used (if applicable): wdio-cucumber-framework: 0.2.0

    Details

    Even with the cucumber option tags like -cucumberOpts.tags=@foo, it will spawn 101 processes, even though only 1 feature was tagged with @foo (Note: The setup is working fine with wdio 3.4.0)

    Enhancement 
    opened by timbru31 41
  • fix(junit-reporter): fix validator import

    fix(junit-reporter): fix validator import

    Proposed changes

    fixes https://github.com/webdriverio/webdriverio/issues/9536

    Types of changes

    • [x] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation update

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] I have added necessary documentation (if appropriate)
    • [ ] I have added proper type definitions for new commands (if appropriate)

    Further comments

    Reviewers: @webdriverio/project-committers

    opened by pwespi 2
  • [🐛 Bug]: ts page class is imported as .js and failing test when updating the import

    [🐛 Bug]: ts page class is imported as .js and failing test when updating the import

    Have you read the Contributing Guidelines on issues?

    WebdriverIO Version

    8.0.13

    Node.js Version

    18

    Mode

    WDIO Testrunner

    Which capabilities are you using?

    {
        browserName: 'chrome'
        browserVersion: 'latest',
        platform: 'macOS'
    }
    

    What happened?

    i am using typescript with webdriverio and page objects files are also in .ts In actual test import for page are written as .js which should not be the case .

    When I remove the file extension (same approach as v7) and run then i get error

    What is your expected behavior?

    page import statement should not have file extension or based on actual file and test should run successfully.

    How to reproduce the bug.

    git clone https://github.com/testSadab/WebdriverIOMochaTS.git git checkout import_issue npm install npm run wdio

    Relevant log output

    git link: https://github.com/testSadab/WebdriverIOMochaTS/tree/import_issue
    logs: https://github.com/testSadab/WebdriverIOMochaTS/blob/import_issue/log.txt
    

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct

    Is there an existing issue for this?

    • [X] I have searched the existing issues
    Bug 🐛 Needs Triaging ⏳ 
    opened by testSadab 1
  • Update wdio-browserstack-service logging for http status codes V7

    Update wdio-browserstack-service logging for http status codes V7

    Proposed changes

    We want to update logging in cases of authorization or access errors users face. The error messages in such cases would be simply logged based on http response status code & the messages are being sent from a Browserstack server.

    Types of changes

    • [x] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation update

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] I have added necessary documentation (if appropriate)
    • [ ] I have added proper type definitions for new commands (if appropriate)

    Further comments

    Reviewers: @webdriverio/project-committers

    opened by amaanbs 1
  • Fix lerna bootstrap

    Fix lerna bootstrap

    Appears to be a known issue: https://github.com/lerna/lerna/issues/2352

    Possibly a result of NPM's flattening

    ~~TODO~~ (done)

    • ~~look into adding --global-style to npmClientArgs in lerna.json~~
    cd packages
    for d in *; do
      echo $d
      ls -ghG $d/node_modules/@wdio/ 2>/dev/null
      ls -ghGd $d/node_modules/webdriver* 2>/dev/null
      ls -ghGd $d/node_modules/devtools 2>/dev/null
    done
    

    Before (some packages are not symlinked):

    devtools
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:13 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:13 utils -> ../../../wdio-utils
    eslint-plugin-wdio
    node_modules
    wdio-allure-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:13 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-appium-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-appium-service/node_modules/webdriverio -> ../../webdriverio
    wdio-browser-runner
    total 0
    lrwxrwxrwx 1 21 Jan  4 20:13 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 26 Jan  4 20:13 local-runner -> ../../../wdio-local-runner
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 29 Jan  4 20:13 mocha-framework -> ../../../wdio-mocha-framework
    lrwxrwxrwx 1 23 Jan  4 20:13 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 20 Jan  4 20:13 runner -> ../../../wdio-runner
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 15 Jan  4 20:13 wdio-browser-runner/node_modules/webdriver -> ../../webdriver
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-browser-runner/node_modules/webdriverio -> ../../webdriverio
    drwxrwxr-x 3 4.0K Jan  4 20:13 wdio-browser-runner/node_modules/devtools
    wdio-browserstack-service
    total 24K
    drwxrwxr-x 4 4.0K Jan  4 20:13 cli
    drwxrwxr-x 3 4.0K Jan  4 20:13 config
    drwxrwxr-x 4 4.0K Jan  4 20:13 globals
    lrwxrwxrwx 1   20 Jan  4 20:13 logger -> ../../../wdio-logger
    drwxrwxr-x 3 4.0K Jan  4 20:13 protocols
    drwxrwxr-x 3 4.0K Jan  4 20:13 repl
    lrwxrwxrwx 1   22 Jan  4 20:13 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1   19 Jan  4 20:13 types -> ../../../wdio-types
    drwxrwxr-x 3 4.0K Jan  4 20:13 utils
    drwxrwxr-x 3 4.0K Jan  4 20:13 wdio-browserstack-service/node_modules/webdriver
    lrwxrwxrwx 1   17 Jan  4 20:13 wdio-browserstack-service/node_modules/webdriverio -> ../../webdriverio
    drwxrwxr-x 4 4.0K Jan  4 20:13 wdio-browserstack-service/node_modules/devtools
    wdio-cli
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 config -> ../../../wdio-config
    lrwxrwxrwx 1 21 Jan  4 20:13 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:13 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:13 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-cli/node_modules/webdriverio -> ../../webdriverio
    wdio-concise-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:13 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-config
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:13 utils -> ../../../wdio-utils
    wdio-crossbrowsertesting-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-crossbrowsertesting-service/node_modules/webdriverio -> ../../webdriverio
    wdio-cucumber-framework
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:13 utils -> ../../../wdio-utils
    wdio-devtools-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-devtools-service/node_modules/webdriverio -> ../../webdriverio
    wdio-dot-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:13 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-firefox-profile-service
    total 0
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-globals
    total 28K
    drwxrwxr-x 3 4.0K Jan  4 20:13 config
    drwxrwxr-x 4 4.0K Jan  4 20:13 globals
    drwxrwxr-x 4 4.0K Jan  4 20:13 logger
    drwxrwxr-x 3 4.0K Jan  4 20:13 protocols
    drwxrwxr-x 3 4.0K Jan  4 20:13 repl
    drwxrwxr-x 3 4.0K Jan  4 20:13 types
    drwxrwxr-x 3 4.0K Jan  4 20:13 utils
    drwxrwxr-x 3 4.0K Jan  4 20:13 wdio-globals/node_modules/webdriver
    lrwxrwxrwx 1   17 Jan  4 20:13 wdio-globals/node_modules/webdriverio -> ../../webdriverio
    drwxrwxr-x 3 4.0K Jan  4 20:13 wdio-globals/node_modules/devtools
    wdio-jasmine-framework
    total 12K
    drwxrwxr-x 4 4.0K Jan  4 20:13 config
    lrwxrwxrwx 1   21 Jan  4 20:13 globals -> ../../../wdio-globals
    lrwxrwxrwx 1   20 Jan  4 20:13 logger -> ../../../wdio-logger
    drwxrwxr-x 3 4.0K Jan  4 20:13 protocols
    drwxrwxr-x 3 4.0K Jan  4 20:13 repl
    lrwxrwxrwx 1   19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1   19 Jan  4 20:13 utils -> ../../../wdio-utils
    drwxrwxr-x 3 4.0K Jan  4 20:13 wdio-jasmine-framework/node_modules/webdriver
    drwxrwxr-x 4 4.0K Jan  4 20:13 wdio-jasmine-framework/node_modules/webdriverio
    drwxrwxr-x 3 4.0K Jan  4 20:13 wdio-jasmine-framework/node_modules/devtools
    wdio-junit-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:13 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-local-runner
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 18 Jan  4 20:13 repl -> ../../../wdio-repl
    lrwxrwxrwx 1 20 Jan  4 20:13 runner -> ../../../wdio-runner
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-logger
    wdio-mocha-framework
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:13 utils -> ../../../wdio-utils
    wdio-protocols
    wdio-repl
    wdio-reporter
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-runner
    total 8.0K
    lrwxrwxrwx 1   20 Jan  4 20:13 config -> ../../../wdio-config
    lrwxrwxrwx 1   21 Jan  4 20:13 globals -> ../../../wdio-globals
    lrwxrwxrwx 1   20 Jan  4 20:13 logger -> ../../../wdio-logger
    drwxrwxr-x 3 4.0K Jan  4 20:13 protocols
    drwxrwxr-x 3 4.0K Jan  4 20:13 repl
    lrwxrwxrwx 1   19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1   19 Jan  4 20:13 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 15 Jan  4 20:13 wdio-runner/node_modules/webdriver -> ../../webdriver
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-runner/node_modules/webdriverio -> ../../webdriverio
    drwxrwxr-x 3 4.0K Jan  4 20:13 wdio-runner/node_modules/devtools
    wdio-sauce-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:13 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-sauce-service/node_modules/webdriverio -> ../../webdriverio
    wdio-selenium-standalone-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-shared-store-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-shared-store-service/node_modules/webdriverio -> ../../webdriverio
    wdio-smoke-test-cjs-service
    wdio-smoke-test-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:13 reporter -> ../../../wdio-reporter
    wdio-smoke-test-service
    wdio-spec-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:13 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-static-server-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-sumologic-reporter
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 22 Jan  4 20:13 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-testingbot-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-testingbot-service/node_modules/webdriverio -> ../../webdriverio
    wdio-types
    wdio-utils
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    wdio-webdriver-mock-service
    total 0
    lrwxrwxrwx 1 23 Jan  4 20:13 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:13 wdio-webdriver-mock-service/node_modules/webdriverio -> ../../webdriverio
    webdriver
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:13 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:13 utils -> ../../../wdio-utils
    webdriverio
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:13 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:13 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:13 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 18 Jan  4 20:13 repl -> ../../../wdio-repl
    lrwxrwxrwx 1 19 Jan  4 20:13 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:13 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 15 Jan  4 20:13 webdriverio/node_modules/webdriver -> ../../webdriver
    lrwxrwxrwx 1 14 Jan  4 20:13 webdriverio/node_modules/devtools -> ../../devtools
    

    With these changes (all packages are symlinked):

    devtools
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    eslint-plugin-wdio
    node_modules
    wdio-allure-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:23 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-appium-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-appium-service/node_modules/webdriverio -> ../../webdriverio
    wdio-browser-runner
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 26 Jan  4 20:23 local-runner -> ../../../wdio-local-runner
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 29 Jan  4 20:23 mocha-framework -> ../../../wdio-mocha-framework
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 18 Jan  4 20:23 repl -> ../../../wdio-repl
    lrwxrwxrwx 1 20 Jan  4 20:23 runner -> ../../../wdio-runner
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 15 Jan  4 20:23 wdio-browser-runner/node_modules/webdriver -> ../../webdriver
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-browser-runner/node_modules/webdriverio -> ../../webdriverio
    lrwxrwxrwx 1 14 Jan  4 20:23 wdio-browser-runner/node_modules/devtools -> ../../devtools
    wdio-browserstack-service
    total 0
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 22 Jan  4 20:23 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-browserstack-service/node_modules/webdriverio -> ../../webdriverio
    wdio-cli
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-cli/node_modules/webdriverio -> ../../webdriverio
    wdio-concise-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:23 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-config
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    wdio-crossbrowsertesting-service
    total 0
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-crossbrowsertesting-service/node_modules/webdriverio -> ../../webdriverio
    wdio-cucumber-framework
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    wdio-devtools-service
    total 0
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-devtools-service/node_modules/webdriverio -> ../../webdriverio
    wdio-dot-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:23 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-firefox-profile-service
    total 0
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-globals
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1  5 Jan  4 20:23 globals -> ../..
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 18 Jan  4 20:23 repl -> ../../../wdio-repl
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 15 Jan  4 20:23 wdio-globals/node_modules/webdriver -> ../../webdriver
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-globals/node_modules/webdriverio -> ../../webdriverio
    lrwxrwxrwx 1 14 Jan  4 20:23 wdio-globals/node_modules/devtools -> ../../devtools
    wdio-jasmine-framework
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 18 Jan  4 20:23 repl -> ../../../wdio-repl
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 15 Jan  4 20:23 wdio-jasmine-framework/node_modules/webdriver -> ../../webdriver
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-jasmine-framework/node_modules/webdriverio -> ../../webdriverio
    lrwxrwxrwx 1 14 Jan  4 20:23 wdio-jasmine-framework/node_modules/devtools -> ../../devtools
    wdio-junit-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:23 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-local-runner
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 18 Jan  4 20:23 repl -> ../../../wdio-repl
    lrwxrwxrwx 1 20 Jan  4 20:23 runner -> ../../../wdio-runner
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-logger
    wdio-mocha-framework
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    wdio-protocols
    wdio-repl
    wdio-reporter
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-runner
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 18 Jan  4 20:23 repl -> ../../../wdio-repl
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 15 Jan  4 20:23 wdio-runner/node_modules/webdriver -> ../../webdriver
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-runner/node_modules/webdriverio -> ../../webdriverio
    lrwxrwxrwx 1 14 Jan  4 20:23 wdio-runner/node_modules/devtools -> ../../devtools
    wdio-sauce-service
    total 0
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-sauce-service/node_modules/webdriverio -> ../../webdriverio
    wdio-selenium-standalone-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-shared-store-service
    total 0
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-shared-store-service/node_modules/webdriverio -> ../../webdriverio
    wdio-smoke-test-cjs-service
    wdio-smoke-test-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:23 reporter -> ../../../wdio-reporter
    wdio-smoke-test-service
    wdio-spec-reporter
    total 0
    lrwxrwxrwx 1 22 Jan  4 20:23 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-static-server-service
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-sumologic-reporter
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 22 Jan  4 20:23 reporter -> ../../../wdio-reporter
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-testingbot-service
    total 0
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-testingbot-service/node_modules/webdriverio -> ../../webdriverio
    wdio-types
    wdio-utils
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    wdio-webdriver-mock-service
    total 0
    lrwxrwxrwx 1 21 Jan  4 20:23 globals -> ../../../wdio-globals
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 17 Jan  4 20:23 wdio-webdriver-mock-service/node_modules/webdriverio -> ../../webdriverio
    webdriver
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    webdriverio
    total 0
    lrwxrwxrwx 1 20 Jan  4 20:23 config -> ../../../wdio-config
    lrwxrwxrwx 1 20 Jan  4 20:23 logger -> ../../../wdio-logger
    lrwxrwxrwx 1 23 Jan  4 20:23 protocols -> ../../../wdio-protocols
    lrwxrwxrwx 1 18 Jan  4 20:23 repl -> ../../../wdio-repl
    lrwxrwxrwx 1 19 Jan  4 20:23 types -> ../../../wdio-types
    lrwxrwxrwx 1 19 Jan  4 20:23 utils -> ../../../wdio-utils
    lrwxrwxrwx 1 15 Jan  4 20:23 webdriverio/node_modules/webdriver -> ../../webdriver
    lrwxrwxrwx 1 14 Jan  4 20:23 webdriverio/node_modules/devtools -> ../../devtools
    

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation update

    Checklist

    • [ ] I have read the CONTRIBUTING doc
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] I have added necessary documentation (if appropriate)
    • [ ] I have added proper type definitions for new commands (if appropriate)

    Further comments

    Reviewers: @webdriverio/project-committers

    opened by SCG82 5
  • [🐛 Bug]: Provide CJS version for `@wdio/shared-store-service`

    [🐛 Bug]: Provide CJS version for `@wdio/shared-store-service`

    Have you read the Contributing Guidelines on issues?

    WebdriverIO Version

    8.1.0

    Node.js Version

    18.12.1

    Mode

    WDIO Testrunner

    Which capabilities are you using?

    No response

    What happened?

    I updated to WDIO 8, started a test run, and got the below error at the start: ERROR @wdio/config:ConfigParser: Failed loading configuration file: file:///Users/nazar/config/chrome.wdio.config.ts: require() of ES Module

    What is your expected behavior?

    Tests should be running.

    How to reproduce the bug.

    1. Update to the WDIO 8
    2. Install @wdio/shared-store-service package
    3. Run tests

    Relevant log output

    ERROR @wdio/config:ConfigParser: Failed loading configuration file: file:///Users/nazar/config/chrome.wdio.config.ts: require() of ES Module /Users/nazar/node_modules/@wdio/shared-store-service/build/index.js from /Users/nazar/src/framework/userMngr.ts not supported.
    Instead change the require of index.js in /Users/nazar/src/framework/userMngr.ts to a dynamic import() which is available in all CommonJS modules.
    Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/nazar/node_modules/@wdio/shared-store-service/build/index.js from /Users/nazar/src/framework/userMngr.ts not supported.
    Instead change the require of index.js in /Users/nazar/src/framework/userMngr.ts to a dynamic import() which is available in all CommonJS modules.
        at require.extensions.<computed> [as .js] (/Users/nazar/node_modules/ts-node/dist/index.js:851:20)
        at Object.<anonymous> (/Users/nazar/src/framework/userMngr.ts:4:32)
        at m._compile (/Users/nazar/node_modules/ts-node/dist/index.js:857:29)
        at require.extensions.<computed> [as .ts] (/Users/nazar/node_modules/ts-node/dist/index.js:859:16)
        at Object.<anonymous> (/Users/nazar/config/common.wdio.config.ts:24:23)
        at m._compile (/Users/nazar/node_modules/ts-node/dist/index.js:857:29)
        at require.extensions.<computed> [as .ts] (/Users/nazar/node_modules/ts-node/dist/index.js:859:16)
        at Object.<anonymous> (/Users/nazar/config/chrome.wdio.config.ts:8:30)
        at m._compile (/Users/nazar/node_modules/ts-node/dist/index.js:857:29)
        at require.extensions.<computed> [as .ts] (/Users/nazar/node_modules/ts-node/dist/index.js:859:16)
        at async Promise.all (index 0)
        at async ConfigParser.addConfigFile (file:///Users/nazar/node_modules/@wdio/config/build/lib/ConfigParser.js:67:36)
        at async ConfigParser.initialize (file:///Users/nazar/node_modules/@wdio/config/build/lib/ConfigParser.js:45:13)
        at async Launcher.run (file:///Users/nazar/node_modules/@wdio/cli/build/launcher.js:37:9)
        at async Module.run (file:///Users/nazar/node_modules/@wdio/cli/build/run.js:63:20) {
      code: 'ERR_REQUIRE_ESM'
    }
    

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct

    Is there an existing issue for this?

    • [X] I have searched the existing issues
    Bug 🐛 help wanted good first pick 
    opened by NaZaRKIN123 1
  • fix workaround for Safari 12.0.3

    fix workaround for Safari 12.0.3

    Proposed changes

    The issue is that when the element's getRect command is executed there is a Safari workaround to extract a rect from the browser executing js snippet. The workaround applied when one of the properties (x, y, width, or height) is a falsy (!) value, previously (in wdio 7) it was applied only if one of the properties were equal to null (== null). The problem happens when on appium you extract a region that has one of those properties 0, it is a valid value, but js snippet execution fails everything on appium.

    Types of changes

    I am replacing ! with === undefined.

    • [x] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] Documentation update

    Checklist

    • [x] I have read the CONTRIBUTING doc
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [ ] I have added necessary documentation (if appropriate)
    • [ ] I have added proper type definitions for new commands (if appropriate)

    Further comments

    I didn't find any tests in this area which is why I don't know how you guys usually test things like that. Feel free to add a test or instruct me on what I should add.

    Reviewers: @webdriverio/project-committers

    opened by kyryloonufriiev 1
Releases(v8.1.3)
  • v8.1.3(Jan 7, 2023)

  • v8.1.2(Jan 3, 2023)

    v8.1.2 (2023-01-03)

    :bug: Bug Fix

    :nail_care: Polish

    :house: Internal

    • wdio-appium-service, wdio-browserstack-service, wdio-crossbrowsertesting-service, wdio-devtools-service, wdio-jasmine-framework, wdio-sauce-service, wdio-shared-store-service, wdio-testingbot-service, wdio-webdriver-mock-service
      • #9527 fix webdriverio version; fs/promises imports (@SCG82)
    • webdriverio

    Committers: 2

    Source code(tar.gz)
    Source code(zip)
  • v8.1.1(Jan 2, 2023)

  • v8.1.0(Jan 2, 2023)

    v8.1.0 (2023-01-02)

    :rocket: New Feature

    • wdio-browserstack-service

    :nail_care: Polish

    • webdriverio
      • #9482 webdriverio: cast bound function to original type (@SCG82)

    :house: Internal

    • devtools, wdio-allure-reporter, wdio-appium-service, wdio-browser-runner, wdio-browserstack-service, wdio-cli, wdio-config, wdio-crossbrowsertesting-service, wdio-cucumber-framework, wdio-devtools-service, wdio-firefox-profile-service, wdio-jasmine-framework, wdio-junit-reporter, wdio-local-runner, wdio-logger, wdio-mocha-framework, wdio-protocols, wdio-reporter, wdio-runner, wdio-sauce-service, wdio-selenium-standalone-service, wdio-shared-store-service, wdio-smoke-test-service, wdio-spec-reporter, wdio-static-server-service, wdio-sumologic-reporter, wdio-testingbot-service, wdio-types, wdio-utils, wdio-webdriver-mock-service, webdriver, webdriverio
    • Other
      • #9493 pre-commit: only lint staged files (@SCG82)
      • #9483 typings setup: use native node.js fs utilities (@SCG82)
      • #9484 update lint-staged filter to check for js, ts, mjs, cjs, mts, cts (@SCG82)
    • devtools, wdio-allure-reporter, wdio-browser-runner, wdio-browserstack-service, wdio-cli, wdio-crossbrowsertesting-service, wdio-cucumber-framework, wdio-devtools-service, wdio-jasmine-framework, wdio-junit-reporter, wdio-local-runner, wdio-mocha-framework, wdio-repl, wdio-reporter, wdio-runner, wdio-sauce-service, wdio-selenium-standalone-service, wdio-smoke-test-cjs-service, wdio-smoke-test-service, wdio-static-server-service, wdio-sumologic-reporter, webdriver, webdriverio

    Committers: 2

    Source code(tar.gz)
    Source code(zip)
  • v7.29.1(Dec 30, 2022)

    No updates!

    What's Changed

    • backward compatibility for node 12,13 by @udarrr in https://github.com/webdriverio/webdriverio/pull/9492

    New Contributors

    • @udarrr made their first contribution in https://github.com/webdriverio/webdriverio/pull/9492

    Full Changelog: https://github.com/webdriverio/webdriverio/compare/v7.29.0...v7.29.1

    Source code(tar.gz)
    Source code(zip)
  • v7.29.0(Dec 29, 2022)

  • v8.0.15(Dec 28, 2022)

  • v8.0.14(Dec 28, 2022)

    v8.0.14 (2022-12-28)

    :bug: Bug Fix

    :nail_care: Polish

    • wdio-browserstack-service
    • wdio-types
      • #9441 Add missing noProxy typing for Capabilities ProxyObject (@taina0407)
    • wdio-cucumber-framework
      • #9438 @wdio/cucumber-framework: add missing Promise.all in registerRequired… (@SCG82)

    :memo: Documentation

    :house: Internal

    • wdio-types
      • #9444 @wdio/types: node16 module resolution compatibility (@SCG82)
    • devtools, eslint-plugin-wdio, wdio-allure-reporter, wdio-appium-service, wdio-browser-runner, wdio-browserstack-service, wdio-cli, wdio-concise-reporter, wdio-config, wdio-crossbrowsertesting-service, wdio-cucumber-framework, wdio-devtools-service, wdio-globals, wdio-jasmine-framework, wdio-junit-reporter, wdio-local-runner, wdio-logger, wdio-mocha-framework, wdio-repl, wdio-reporter, wdio-runner, wdio-sauce-service, wdio-selenium-standalone-service, wdio-shared-store-service, wdio-spec-reporter, wdio-sumologic-reporter, wdio-testingbot-service, wdio-types, wdio-utils, wdio-webdriver-mock-service, webdriver, webdriverio
    • Other

    Committers: 7

    Source code(tar.gz)
    Source code(zip)
  • v7.28.1(Dec 24, 2022)

  • v7.28.0(Dec 15, 2022)

    v7.28.0 (2022-12-15)

    :nail_care: Polish

    • devtools, wdio-browserstack-service, wdio-devtools-service, wdio-runner, wdio-sync, webdriverio
      • #9386 feat: ability to send headers when connect to browser using puppeteer (@DudaGod)

    Committers: 2

    Source code(tar.gz)
    Source code(zip)
  • v8.0.13(Dec 14, 2022)

  • v8.0.12(Dec 12, 2022)

  • v8.0.11(Dec 11, 2022)

    🐛 Bug Fix

    • removed logging https://github.com/webdriverio/webdriverio/commit/ec90eb497725ddd1bc513eff89de7b36124e213e
    • add seleniumCdp cap to bs option - refs https://github.com/webdriverio/webdriverio/commit/13d505d5c6ec71ef5762fe05afeb19da58167466

    Committers: 1

    Source code(tar.gz)
    Source code(zip)
  • v8.0.10(Dec 11, 2022)

    v8.0.10 (2022-12-11)

    :rocket: New Feature

    • devtools, wdio-devtools-service, webdriverio
      • #9354 feat: ability to send headers when connect to browser using puppeteer (@DudaGod)

    :bug: Bug Fix

    :nail_care: Polish

    :memo: Documentation

    Committers: 4

    Source code(tar.gz)
    Source code(zip)
  • v8.0.9(Dec 7, 2022)

  • v8.0.8(Dec 7, 2022)

    v8.0.8 (2022-12-07)

    :bug: Bug Fix

    :nail_care: Polish

    • wdio-types

    :house: Internal

    • wdio-cli, wdio-local-runner
    • Other
      • #9336 Modified globalSetup.ts to make reason and origin of throwBetterErrorMessage more clear (@RossVertizan)
    • wdio-cli
      • #9335 Modified wdio-cli -> utils.test.ts -> getProjectRoot to handle alternate names of clone directory (@RossVertizan)

    Committers: 4

    Source code(tar.gz)
    Source code(zip)
  • v8.0.7(Dec 6, 2022)

  • v8.0.6(Dec 5, 2022)

  • v8.0.5(Dec 5, 2022)

  • v8.0.4(Dec 2, 2022)

  • v8.0.3(Dec 2, 2022)

  • v8.0.2(Dec 2, 2022)

  • v8.0.0(Dec 1, 2022)

    :boom: Breaking Change

    • Drop Node.js v12, v13 and v14 Support
    • Transition code base from CommonJS to ESM
      • This should not affect WebdriverIO users as you can use the testrunner, as well as webdriver, devtools and webdriverio NPM packages in a CJS environment
      • We still mark this as breaking as we can't gurantee that all (untested) functionality will behave the same due to all rewrites done to the code base
    • Removal of @wdio/sync which we deprecated in v7
    • WebdriverIO types are now accessible through @wdio/globals/types instead of webdriverio/async
    • Removal of browser.config
      • Please use browser.options instead
      • This will stop support assigning custom properties to the wdio.conf.js which we disadvise you to do, instead either assign it as part of a custom capability, e.g. custom:options (note the : in it, read more on custom capabilities in the WebDriver spec) or via `@wdio/shared-store-service
    • discontinued support for tsconfig-paths

    :rocket: New Feature

    • New runner plugin called @wdio/browser-runner allows you to run unit and component tests in the browser
    • Access WebdriverIO primitives through the new @wdio/globals package
    • New Action API

    :house: Internal

    • Update required Node.js version for development to v18.12.1
    • Migrate unit tests from Jest to Vitest

    :nail_care: Polish

    • Improvements on configuration wizard and create-wdio
      • It now detects whether your projects uses ESM or CJS and creates example files accordingly
      • It now finds the project root and sets up the project relative to it
      • Adds support for browser runner selection

    :memo: Documentation

    • Little design tweaks to the hero section on the main page
    • Added new section for component testing
    • Added new API section for browser, element, mock objects, modules and environment variables
    Source code(tar.gz)
    Source code(zip)
  • v7.27.0(Nov 23, 2022)

    v7.27.0 (2022-11-23)

    :eyeglasses: Spec Compliancy

    • wdio-protocols

    :rocket: New Feature

    • wdio-browserstack-service
      • #9168 [v7] @wdio/browserstack-service: Add session naming options (@SCG82)

    :nail_care: Polish

    • wdio-sauce-service
      • #9167 [v7] @wdio/sauce-service: apply setJobName in beforeSuite (@SCG82)

    :memo: Documentation

    • wdio-cli
      • #9228 [v7] Add the Vitaq AI service to the list of services in the v7 WebdriverIO documentation (@RossVertizan)

    Committers: 3

    Source code(tar.gz)
    Source code(zip)
  • v7.26.0(Nov 12, 2022)

    v7.26.0 (2022-11-12)

    :bug: Bug Fix

    • wdio-concise-reporter, wdio-junit-reporter, wdio-runner, wdio-types
      • #9157 [v7] @wdio/types: Add type definition for reporter outputFileFormat (@SCG82)
    • wdio-config

    :memo: Documentation

    • wdio-types
      • #9137 [v7] @wdio/types: fix ChromeOptions - perfLoggingPrefs (@SCG82)
      • #9121 Add missing capability types in BrowserStackCapabilities (@SCG82)

    Committers: 3

    Source code(tar.gz)
    Source code(zip)
  • v7.25.4(Oct 28, 2022)

    v7.25.4 (2022-10-28)

    :bug: Bug Fix

    • wdio-mocha-framework
      • #9083 Issue 9082 - beforeTest afterTest hooks not working with specify test interface in Mocha BDD (@nagpalkaran95)
    • webdriverio

    :memo: Documentation

    • #9088 Fix example to check wdio options with TypeScript (v7) (@rhysd)

    Committers: 4

    Source code(tar.gz)
    Source code(zip)
  • v7.25.3(Oct 17, 2022)

  • v7.25.2(Oct 14, 2022)

  • v7.25.1(Sep 30, 2022)

  • v7.25.0(Sep 23, 2022)

Owner
WebdriverIO
Webdriver/Selenium 2.0 JavaScript bindings for Node.js
WebdriverIO
Insanely fast, full-stack, headless browser testing using node.js

Zombie.js Insanely fast, headless full-stack testing using Node.js The Bite If you're going to write an insanely fast, headless browser, how can you n

Assaf Arkin 5.6k Dec 22, 2022
End-to-end testing framework written in Node.js and using the Webdriver API

Nightwatch.js Homepage | Getting Started | Developer Guide | API Reference | About Automated end-to-end testing framework powered by Node.js and using

Nightwatch.js 11.3k Jan 7, 2023
A simple and stable cross-browser testing tool. 简单稳定的跨浏览器测试工具。

totoro A simple and stable cross-browser testing tool. Latest stable version: v2.0 Change Log 中文版使用文档 0. Features Run in real browsers Support all tes

totoro 568 Dec 21, 2022
A next-generation code testing stack for JavaScript.

Intern Software testing for humans ⚠️ This documentation is for the development version of Intern. For the current release version, go here. Intern is

Intern: next-gen JavaScript testing 4.4k Jan 7, 2023
Scriptable Headless Browser

PhantomJS - Scriptable Headless WebKit PhantomJS (phantomjs.org) is a headless WebKit scriptable with JavaScript. The latest stable release is version

Ariya Hidayat 29.1k Jan 5, 2023
A scriptable browser like PhantomJS, based on Firefox

SlimerJS http://slimerjs.org/ SlimerJS is a scriptable browser. It allows you to manipulate a web page with an external Javascript script: opening a w

Laurent Jouanneau 3k Dec 31, 2022
Headless Chrome Node.js API

Puppeteer API | FAQ | Contributing | Troubleshooting Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over th

Puppeteer 81.4k Jan 1, 2023
A node.js library for testing modern web applications

Taiko Docs | API reference A Node.js library for testing modern web applications What’s Taiko? Taiko is a free and open source browser automation tool

Gauge 3.2k Dec 30, 2022
CasperJS is no longer actively maintained. Navigation scripting and testing utility for PhantomJS and SlimerJS

CasperJS Important note: the master branch hosts the development version of CasperJS, which is now pretty stable and should be the right version to us

CasperJS 7.3k Dec 25, 2022
Next-gen mobile first analytics server (think Mixpanel, Google Analytics) with built-in encryption supporting HTTP2 and gRPC. Node.js, headless, API-only, horizontally scaleable.

Introduction to Awacs Next-gen behavior analysis server (think Mixpanel, Google Analytics) with built-in encryption supporting HTTP2 and gRPC. Node.js

Socketkit 52 Dec 19, 2022
A new generation GUI automation framework for Web and Desktop Application Testing and Automation.

Clicknium-docs Clicknium is a new generation GUI automation framework for all types of applications. It provides easy and smooth developer experience

null 109 Dec 19, 2022
:seedling: Next-Gen AI-Assisted Isomorphic Application Engine for Embedded, Console, Mobile, Server and Desktop

lychee.js Mono Repository Important Notes to follow through Installation Quirks: The lycheejs-engine Repository needs to be installed to the path /opt

Cookie Engineer 791 Dec 31, 2022
Boilerplate project to run MOBILE Test Automation with WebdriverIO v7, Mocha, Appium, Allure reporting and Momentum Suite cloud device farm support

WebdriverIO Mocha Appium Momentumsuite WebdriverIO Integration with local or Momentum Suite real mobile farm devices Supports Native or Hybrid Android

Momentum Suite 21 Dec 5, 2022
Next-gen, highly customizable content editor for the browser - based on React and Redux and written in TypeScript. WYSIWYG on steroids.

ReactPage ReactPage is a smart, extensible and modern editor ("WYSIWYG") for the web written in React. If you are fed up with the limitations of conte

null 9.1k Jan 6, 2023
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A next-gen framework for type-safe command-line applications

Zors ?? Next-gen framework for building modern, type-safe command-line applications. ?? Tiny (zero dependencies) ?? Runtime agonistic (supports both D

Sidharth Rathi 13 Dec 1, 2022
A next-gen web framework made on top of bun

Eviate JS (WIP) Next-generation web framework to build powerful apps Features Simple: No more req or res. It's all ctx (context) and plain objects! Fa

eviatejs 17 Oct 30, 2022
There can be more than Notion and Miro. Affine is a next-gen knowledge base that brings planning, sorting and creating all together. Privacy first, open-source, customizable and ready to use.

AFFiNE.PRO The Next-Gen Knowledge Base to Replace Notion & Miro. Planning, Sorting and Creating all Together. Open-source, Privacy-First, and Free to

Toeverything 12.1k Jan 9, 2023