← Back to list

test-automation
by spjoshis
Modular Claude plugins for agent-based expertise and reusable skills across software development and Agile. Easily extend, share, and automate best practices for modern development.
⭐ 1🍴 0📅 Dec 30, 2025
SKILL.md
name: test-automation description: Master test automation with Selenium, Cypress, Playwright, framework design, and maintainable automated tests.
Test Automation
Build robust automated test suites using modern frameworks like Selenium, Cypress, and Playwright for efficient regression testing.
When to Use This Skill
- Regression testing automation
- CI/CD integration
- API testing automation
- Cross-browser testing
- Performance testing
- Smoke test automation
- Data-driven testing
- Continuous testing
Core Concepts
1. Cypress Test Example
// cypress/e2e/login.cy.js
describe('User Login', () => {
beforeEach(() => {
cy.visit('/login')
})
it('should login successfully with valid credentials', () => {
cy.get('[data-testid="email"]').type('user@example.com')
cy.get('[data-testid="password"]').type('SecurePass123!')
cy.get('[data-testid="login-btn"]').click()
cy.url().should('include', '/dashboard')
cy.get('[data-testid="welcome-msg"]')
.should('contain', 'Welcome')
})
it('should show error with invalid credentials', () => {
cy.get('[data-testid="email"]').type('invalid@example.com')
cy.get('[data-testid="password"]').type('wrong')
cy.get('[data-testid="login-btn"]').click()
cy.get('[data-testid="error-msg"]')
.should('be.visible')
.and('contain', 'Invalid credentials')
})
})
2. Page Object Model
// pages/LoginPage.js
class LoginPage {
get emailInput() { return cy.get('[data-testid="email"]') }
get passwordInput() { return cy.get('[data-testid="password"]') }
get loginButton() { return cy.get('[data-testid="login-btn"]') }
get errorMessage() { return cy.get('[data-testid="error-msg"]') }
login(email, password) {
this.emailInput.type(email)
this.passwordInput.type(password)
this.loginButton.click()
}
verifyLoginError(message) {
this.errorMessage.should('contain', message)
}
}
export default new LoginPage()
// Test using Page Object
import LoginPage from '../pages/LoginPage'
it('login test', () => {
cy.visit('/login')
LoginPage.login('user@example.com', 'password')
})
3. API Test Example (REST Assured - Java)
@Test
public void testGetUser() {
given()
.baseUri("https://api.example.com")
.header("Authorization", "Bearer " + token)
.pathParam("id", "123")
.when()
.get("/users/{id}")
.then()
.statusCode(200)
.body("id", equalTo("123"))
.body("name", notNullValue())
.body("email", containsString("@"));
}
Best Practices
- Use selectors wisely - data-testid over CSS
- Page Object Model - Maintainable structure
- Wait strategies - Explicit over implicit
- Independent tests - No test dependencies
- Test data management - Fixtures, factories
- Clear assertions - Meaningful error messages
- Screenshot on failure - Debug information
- CI/CD integration - Automated execution
Resources
- Cypress: https://www.cypress.io
- Playwright: https://playwright.dev
- Selenium: https://www.selenium.dev
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
✓説明文
100文字以上の説明がある
+10
○人気
GitHub Stars 100以上
0/15
✓最近の活動
3ヶ月以内に更新
+5
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
○言語
プログラミング言語が設定されている
0/5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon
