From aidotnet-moyucode
Cross-browser automation framework for testing, scraping, and web automation. Supports Chromium, Firefox, and WebKit with a single API.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aidotnet-moyucode:playwrightThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Cross-browser automation for testing, scraping, and web automation supporting Chromium, Firefox, and WebKit.
Cross-browser automation for testing, scraping, and web automation supporting Chromium, Firefox, and WebKit.
npm install playwright
npx playwright install # Install browsers
import { chromium, firefox, webkit } from 'playwright';
async function automateTask() {
// Launch any browser
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({
viewport: { width: 1920, height: 1080 },
userAgent: 'Custom User Agent',
});
const page = await context.newPage();
await page.goto('https://example.com');
// Click, type, interact
await page.click('button.login');
await page.fill('input[name="email"]', '[email protected]');
await page.fill('input[name="password"]', 'password123');
await page.click('button[type="submit"]');
// Wait for navigation
await page.waitForURL('**/dashboard');
await browser.close();
}
async function captureContent(url: string) {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto(url);
// Screenshot
await page.screenshot({
path: 'screenshot.png',
fullPage: true,
});
// PDF (Chromium only)
await page.pdf({
path: 'document.pdf',
format: 'A4',
margin: { top: '1cm', bottom: '1cm' },
});
await browser.close();
}
async function scrapeProducts(url: string) {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto(url);
// Use locators for reliable element selection
const products = await page.locator('.product-card').all();
const data = await Promise.all(products.map(async (product) => ({
name: await product.locator('.name').textContent(),
price: await product.locator('.price').textContent(),
rating: await product.locator('.rating').getAttribute('data-value'),
})));
await browser.close();
return data;
}
import { request } from 'playwright';
async function testAPI() {
const context = await request.newContext({
baseURL: 'https://api.example.com',
extraHTTPHeaders: {
'Authorization': 'Bearer token123',
},
});
// GET request
const response = await context.get('/users');
const users = await response.json();
// POST request
const createResponse = await context.post('/users', {
data: { name: 'John', email: '[email protected]' },
});
await context.dispose();
}
import { test, expect } from '@playwright/test';
test('user can login', async ({ page }) => {
await page.goto('/login');
await page.fill('[name="email"]', '[email protected]');
await page.fill('[name="password"]', 'password');
await page.click('button[type="submit"]');
await expect(page).toHaveURL('/dashboard');
await expect(page.locator('h1')).toHaveText('Welcome');
});
browser, testing, automation, e2e, scraping
npx claudepluginhub joshuarweaver/cascade-data-analytics --plugin aidotnet-moyucodeBrowser automation and E2E testing with Playwright. Auto-detects dev servers, writes test scripts for cross-browser testing, visual regression, form filling, and login flows.
Guides Playwright end-to-end testing for web apps with cross-browser support (Chromium, Firefox, WebKit), visual regression, API testing, and mobile emulation. Use for E2E tests and UI automation workflows.
Automates browsers with Playwright for testing pages, taking screenshots, checking UI, verifying login flows, and testing responsive behavior.