Skip to content

Commit 865d1fe

Browse files
authored
feat: validate skill in CI with agnix (#7)
* feat: validate skill in CI with agnix * chore: pin to action to specific hash
1 parent 4839a82 commit 865d1fe

3 files changed

Lines changed: 29 additions & 10 deletions

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Validate AI Skill
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
agnix:
11+
name: Agnix Lint
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Validate agent configs
17+
uses: agent-sh/agnix@12a1917d13e7c804bc91768c30dd4159f536c5c6

SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
name: playwright-best-practices
3-
description: Writing Playwright tests, fixing flaky tests, debugging failures, implementing Page Object Model, configuring CI/CD, optimizing performance, mocking APIs, handling authentication or OAuth, testing accessibility (axe-core), file uploads/downloads, date/time mocking, WebSockets, geolocation, permissions, multi-tab/popup flows, mobile/responsive layouts, touch gestures, GraphQL, error handling, offline mode, multi-user collaboration, third-party services (payments, email verification), console error monitoring, global setup/teardown, test annotations (skip, fixme, slow), test tags (@smoke, @fast, @critical, filtering with --grep), project dependencies, security testing (XSS, CSRF, auth), performance budgets (Web Vitals, Lighthouse), iframes, component testing, canvas/WebGL, service workers/PWA, test coverage, i18n/localization, Electron apps, or browser extension testing. Covers E2E, component, API, visual, accessibility, security, Electron, and extension testing.
2+
name: playwright-best-practices-skill
3+
description: Use when writing Playwright tests, fixing flaky tests, debugging failures, implementing Page Object Model, configuring CI/CD, optimizing performance, mocking APIs, handling authentication or OAuth, testing accessibility (axe-core), file uploads/downloads, date/time mocking, WebSockets, geolocation, permissions, multi-tab/popup flows, mobile/responsive layouts, touch gestures, GraphQL, error handling, offline mode, multi-user collaboration, third-party services (payments, email verification), console error monitoring, global setup/teardown, test annotations (skip, fixme, slow), test tags (@smoke, @fast, @critical, filtering with --grep), project dependencies, security testing (XSS, CSRF, auth), performance budgets (Web Vitals, Lighthouse), iframes, component testing, canvas/WebGL, service workers/PWA, test coverage, i18n/localization, Electron apps, or browser extension testing. Covers E2E, component, API, visual, accessibility, security, Electron, and extension testing.
44
license: MIT
55
metadata:
66
author: currents.dev

testing-patterns/forms-validation.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ test("complete a multi-step booking wizard", async ({ page }) => {
150150

151151
await test.step("enter guest information", async () => {
152152
await expect(
153-
page.getByRole("heading", { name: "Guest Info" })
153+
page.getByRole("heading", { name: "Guest Info" }),
154154
).toBeVisible();
155155

156156
await page.getByLabel("Full name").fill("Alice Smith");
@@ -162,7 +162,7 @@ test("complete a multi-step booking wizard", async ({ page }) => {
162162

163163
await test.step("select room options", async () => {
164164
await expect(
165-
page.getByRole("heading", { name: "Room Selection" })
165+
page.getByRole("heading", { name: "Room Selection" }),
166166
).toBeVisible();
167167

168168
await page.getByLabel("Room type").selectOption("suite");
@@ -174,7 +174,7 @@ test("complete a multi-step booking wizard", async ({ page }) => {
174174

175175
await test.step("confirm booking", async () => {
176176
await expect(
177-
page.getByRole("heading", { name: "Confirmation" })
177+
page.getByRole("heading", { name: "Confirmation" }),
178178
).toBeVisible();
179179

180180
await expect(page.getByText("Alice Smith")).toBeVisible();
@@ -184,7 +184,7 @@ test("complete a multi-step booking wizard", async ({ page }) => {
184184
});
185185

186186
await expect(
187-
page.getByRole("heading", { name: "Booking complete" })
187+
page.getByRole("heading", { name: "Booking complete" }),
188188
).toBeVisible();
189189
});
190190

@@ -242,7 +242,7 @@ test("form submission shows server-side validation errors", async ({
242242
await page.getByRole("button", { name: "Sign up" }).click();
243243

244244
await expect(
245-
page.getByText("Email address already registered")
245+
page.getByText("Email address already registered"),
246246
).toBeVisible();
247247
});
248248

@@ -253,7 +253,9 @@ test("form shows loading state during submission", async ({ page }) => {
253253
await page.getByLabel("Email").fill("user@test.com");
254254
await page.getByLabel("Details").fill("Found an issue");
255255

256-
const submit = page.getByRole("button", { name: /Submit feedback|Submitting/ });
256+
const submit = page.getByRole("button", {
257+
name: /Submit feedback|Submitting/,
258+
});
257259
await submit.click();
258260

259261
await expect(submit).toHaveText(/Submitting/);
@@ -371,7 +373,7 @@ test("native HTML5 validation with required attribute", async ({ page }) => {
371373

372374
const emailInput = page.getByLabel("Email");
373375
const validationMessage = await emailInput.evaluate(
374-
(el: HTMLInputElement) => el.validationMessage
376+
(el: HTMLInputElement) => el.validationMessage,
375377
);
376378
expect(validationMessage).toBeTruthy();
377379
});
@@ -536,7 +538,7 @@ await page.getByLabel("Date").fill("2025-06-15");
536538
await page.getByLabel("Date").dispatchEvent("change");
537539
```
538540

539-
### `selectOption()` throws "not a <select> element"
541+
### `selectOption()` throws "not a select element"
540542

541543
**Cause**: The dropdown is a custom component (ARIA listbox), not a native `<select>`.
542544

0 commit comments

Comments
 (0)