agentsclimarketplace

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

Install
npx -y skills add Pyfagorass/bookofspells --skill testcafe-skill

Assembled 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

BadGoodWhy
await t.wait(5000)Smart assertions with timeoutArbitrary delays
Deep CSS selectorsSelector().withText()Fragile
No error screenshotst.takeScreenshot() on failureMissing debug info

Quick Reference

TaskCommand
Run allnpx testcafe chrome tests/
Run headlessnpx testcafe chrome:headless tests/
Run specificnpx testcafe chrome tests/login.js
Multiple browsersnpx testcafe chrome,firefox tests/
Live modenpx testcafe chrome tests/ --live
Screenshotawait t.takeScreenshot()
Resizeawait 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

Keep looking

Skills are one crate of 326,834. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.