mcpField
W
webdriverio-skill

webdriverio-skill

github.com/lambdatestTesting & quality384257 installsUpdated 2w ago
Repository

About webdriverio-skill

A WebdriverIO automation skill for test authors, with guidance on runner selection, selectors, page objects, waits, and local or LambdaTest cloud execution.

Key features

  1. 01Mocha, Jasmine, and Cucumber guidance
  2. 02Selector and page-object patterns
  3. 03Wait strategies and test examples
  4. 04LambdaTest cloud configuration
  5. 05Run, suite, and screenshot commands

Use cases

  1. 01Automating browser login tests
  2. 02Structuring tests with page objects
  3. 03Choosing a runner for a test project
  4. 04Running tests with LambdaTest

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/lambdatest/agent-skills --skill webdriverio-skill

After installing, type/webdriverio-skillin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
advanced-patterns.md
cloud-integration.md
playbook.md

Details

From the project README

WebdriverIO Automation Skill

Step 1 — Execution Target

Default local. If mentions "cloud", "TestMu", "LambdaTest" → cloud via WDIO LambdaTest service.

Step 2 — Framework

SignalRunner
DefaultMocha
"Jasmine"Jasmine
"Cucumber", "BDD"Cucumber

Core Patterns

Selectors
// ✅ Preferred
await $('[data-testid="submit"]').click();
await $('aria/Submit').click();
await $('button=Submit').click(); // text-based

// Chaining
await $('form').$('input[name="email"]').setValue('[email protected]');

// Multiple elements
const items = await $$('.list-item');
Basic Test (Mocha)
describe('Login', () => {
    it('should login successfully', async () => {
        await browser.url('/login');
        await $('[data-testid="email"]').setValue('[email protected]');
        await $('[data-testid="password"]').setValue('password123');
        await $('[data-testid="submit"]').click();
        await expect(browser).toHaveUrl(expect.stringContaining('/dashboard'));
    });
});
Page Object
class LoginPage {
    get inputEmail() { return $('[data-testid="email"]'); }
    get inputPassword() { return $('[data-testid="password"]'); }
    get btnSubmit() { return $('[data-testid="submit"]'); }

    async login(email, password) {
        await this.inputEmail.setValue(email);
        await this.inputPassword.setValue(password);
        await this.btnSubmit.click();
    }
}
module.exports = new LoginPage();
TestMu AI Cloud Config
// wdio.conf.js
exports.config = {
    user: process.env.LT_USERNAME,
    key: process.env.LT_ACCESS_KEY,
    hostname: 'hub.lambdatest.com',
    port: 80,
    path: '/wd/hub',
    services: ['lambdatest'],
    capabilities: [{
        browserName: 'Chrome',
        browserVersion: 'latest',
        'LT:Options': {
            platform: 'Windows 11',
            build: 'WDIO Build',
            name: 'WDIO Test',
            video: true,
            network: true,
        }
    }],
};
Wait Strategies
// Wait for element
await $('[data-testid="result"]').waitForDisplayed({ timeout: 10000 });

// Wait for condition
await browser.waitUntil(
    async () => (await $('[data-testid="count"]').getText()) === '5',
    { timeout: 10000, timeoutMsg: 'Count did not reach 5' }
);

Quick Reference

TaskCommand
Setupnpm init wdio@latest
Run allnpx wdio run wdio.conf.js
Run specificnpx wdio run wdio.conf.js --spec ./test/login.js
Run suitenpx wdio run wdio.conf.js --suite smoke
ParallelSet maxInstances: 5 in config
Screenshotawait browser.saveScreenshot('./screenshot.png')

Reference Files

FileWhen to Read
reference/cloud-integration.mdLambdaTest service, parallel, capabilities
reference/advanced-patterns.mdCustom commands, reporters, services

Deep Patterns → reference/playbook.md

§SectionLines
1Production ConfigurationMulti-env, multi-browser configs
2Page Object ModelBasePage, LoginPage, DashboardPage
3Custom CommandsBrowser + element commands, TypeScript
4Network MockingDevTools mock, abort, error simulation
5File OperationsUpload, download, drag & drop
6Multi-Tab, iFrame & Shadow DOMWindow handles, nested shadow
7Visual RegressionImage comparison service
8API TestingFetch-based, API+UI combined
9Mobile TestingAppium service integration
10LambdaTest IntegrationCloud grid config
11CI/CD IntegrationGitHub Actions, Docker Compose
12Debugging Quick-Reference11 common problems
13Best Practices Checklist14 items

Comments

Markdown supported