Testcafe skill
Skill Pyfagorass/bookofspells/skills/lambdatest/testcafe-skill
Generates TestCafe automation tests in JavaScript or TypeScript. Supports local and TestMu AI cloud. Triggers on: "TestCafe", "test cafe", "fixture/test".From its SKILL.md
npx -y skills add Pyfagorass/bookofspells --skill testcafe-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
2.6 KB, 578 tokens by cl100k_base, as published. Nobody here has run it
TestCafe Automation Skill
Core Patterns
Basic Test
import { Selector } from 'testcafe';
fixture('Login').page('https://example.com/login');
test('Login with valid credentials', async t => {
await t
.typeText('#username', '[email protected]')
.typeText('#password', 'password123')
.click('button[type="submit"]')
.expect(Selector('.dashboard').exists).ok();
});
Selectors
const submitBtn = Selector('button').withText('Submit');
const listItems = Selector('.item').count;
const nthItem = Selector('.item').nth(2);
const filtered = Selector('.item').withAttribute('data-status', 'active');
Page Model
import { Selector, t } from 'testcafe';
class LoginPage {
constructor() {
this.usernameInput = Selector('#username');
this.passwordInput = Selector('#password');
this.submitButton = Selector('button[type="submit"]');
}
async login(username, password) {
await t
.typeText(this.usernameInput, username)
.typeText(this.passwordInput, password)
.click(this.submitButton);
}
}
export default new LoginPage();
TestMu AI Cloud
See reference/cloud-integration.md for full cloud setup and shared/testmu-cloud-reference.md for capabilities.
export LT_USERNAME=your_username
export LT_ACCESS_KEY=your_key
npx testcafe "lambdatest:Chrome@latest:Windows 11" tests/
Anti-Patterns
| Bad | Good | Why |
|---|---|---|
await t.wait(5000) | Smart assertions with timeout | Arbitrary delays |
| Deep CSS selectors | Selector().withText() | Fragile |
| No error screenshots | t.takeScreenshot() on failure | Missing debug info |
Quick Reference
| Task | Command |
|---|---|
| Run all | npx testcafe chrome tests/ |
| Run headless | npx testcafe chrome:headless tests/ |
| Run specific | npx testcafe chrome tests/login.js |
| Multiple browsers | npx testcafe chrome,firefox tests/ |
| Live mode | npx testcafe chrome tests/ --live |
| Screenshot | await t.takeScreenshot() |
| Resize | await t.resizeWindow(1280, 720) |
Deep Patterns
For advanced patterns, debugging guides, CI/CD integration, and best practices,
see reference/playbook.md.
What ships with it: 3 files
15.6 KB alongside SKILL.md
reference/
- advanced-patterns.md2.9 KB
- cloud-integration.md901 B
- playbook.md11.8 KB