跳到主要内容
知仓学习社ZHICANG

webdriverio-skill

Generates WebdriverIO (WDIO) automation tests in JavaScript or TypeScript. Supports local and TestMu AI cloud. Use when user mentions "WebdriverIO",…

不碰外部(只输出文字)无严重或高危命中sickn33/agentic-awesome-skills

它会碰到什么

扫了多少1 个文本文件,5 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

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", "$", "$$". Triggers on: "WebdriverIO", "WDIO", "wdio", "browser.$".

Step 1 — Execution Target

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

Step 2 — Framework

| Signal | Runner |

|--------|--------|

| Default | Mocha |

| "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

| Task | Command |

|------|---------|

| Setup | npm init wdio@latest |

| Run all | npx wdio run wdio.conf.js |

| Run specific | npx wdio run wdio.conf.js --spec ./test/login.js |

| Run suite | npx wdio run wdio.conf.js --suite smoke |

| Parallel | Set maxInstances: 5 in config |

| Screenshot | await browser.saveScreenshot('./screenshot.png') |

Reference Files

| File | When to Read |

|------|-------------|

| reference/cloud-integration.md | LambdaTest service, parallel, capabilities |

| reference/advanced-patterns.md | Custom commands, reporters, services |

Deep Patterns → reference/playbook.md

| § | Section | Lines |

|---|---------|-------|

| 1 | Production Configuration | Multi-env, multi-browser configs |

| 2 | Page Object Model | BasePage, LoginPage, DashboardPage |

| 3 | Custom Commands | Browser + element commands, TypeScript |

| 4 | Network Mocking | DevTools mock, abort, error simulation |

| 5 | File Operations | Upload, download, drag & drop |

| 6 | Multi-Tab, iFrame & Shadow DOM | Window handles, nested shadow |

| 7 | Visual Regression | Image comparison service |

| 8 | API Testing | Fetch-based, API+UI combined |

| 9 | Mobile Testing | Appium service integration |

| 10 | LambdaTest Integration | Cloud grid config |

| 11 | CI/CD Integration | GitHub Actions, Docker Compose |

| 12 | Debugging Quick-Reference | 11 common problems |

| 13 | Best Practices Checklist | 14 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.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

同名技能的其他版本

有 3 个不同仓库或目录里都有叫 webdriverio-skill 的技能。它们内容并不相同,别混用: