界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
开发与工程 · SKILL.md

webdriverio-skill

webdriverio-skill

【开发与工程】Generates WebdriverIO (WDIO) automation tests in JavaScript or TypeScript. Supports local and TestMu AI cloud. Use when user mentions "WebdriverIO", "WDIO", "wdio.conf", "browser.url", "quot;, "$". Triggers on: "WebdriverIO", "WDIO", "wdio", "browser.quot;.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: webdriverio-skill description: 'Generates WebdriverIO (WDIO) automation tests in JavaScript or TypeScript. Supports local and TestMu AI cloud. Use when user mentions "WebdriverIO", "WDIO", "wdio.conf", "browser.url", "quot;, "$". Triggers on: "WebdriverIO", "WDIO", "wdio", "browser.quot;.' risk: critical source: https://github.com/LambdaTest/agent-skills/tree/main/webdriverio-skill source_repo: LambdaTest/agent-skills source_type: community date_added: 2026-07-01 license: MIT license_source: https://github.com/LambdaTest/agent-skills/blob/main/LICENSE

WebdriverIO Automation Skill

When to Use

Use this skill when you need generates WebdriverIO (WDIO) automation tests in JavaScript or TypeScript. Supports local and TestMu AI cloud. Use when user mentions "WebdriverIO", "WDIO", "wdio.conf", "browser.url", "quot;, "$". Triggers on: "WebdriverIO", "WDIO", "wdio", "browser.quot;.

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('test@test.com');

// 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('user@test.com');
        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

Limitations

  • Use this skill only when the task clearly matches its upstream source and local project context.
  • Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
  • Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.
我的收藏