playwright-validation — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited playwright-validation (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill guides you through validating UI changes and ensuring comprehensive Playwright E2E test coverage.
git diff main --stat
git diff main --name-only | grep -E "\.(tsx?|less|css|scss)$" git diff main -- "openmetadata-ui/src/main/resources/ui/src/components/**" --stat git diff main --name-only | grep -E "playwright.*\.spec\.ts$"playwright/e2e/Pages/ for page-level testsplaywright/e2e/Features/ for feature-specific testsplaywright/utils/ for helper functionsplaywright/support/ for entity classes and fixtures mcp__playwright__browser_navigate to http://localhost:8585mcp__playwright__browser_fill_form for login[email protected] / adminmcp__playwright__browser_click for navigationmcp__playwright__browser_snapshot to inspect page statea. Add necessary test fixtures in beforeAll:
b. Add cleanup in afterAll:
c. Write the test following the pattern:
test('Descriptive Test Name - What it validates', async ({ page }) => {
test.setTimeout(300000);
await test.step('Step description', async () => {
// Test actions and assertions
});
await test.step('Next step', async () => {
// More actions and assertions
});
}); yarn lint:playwrightError-level rules (no-networkidle, no-page-pause, no-focused-test) will block CI. See the handbook's ESLint Enforcement section for the full rule reference.
import { sidebarClick } from '../../utils/sidebar';
import { redirectToHomePage } from '../../utils/common';
import { selectDataProduct, selectDomain } from '../../utils/domain';import { waitForAllLoadersToDisappear } from '../../utils/entity';
await waitForAllLoadersToDisappear(page);
await expect(page.getByTestId('content')).toBeVisible();
// NEVER use: page.waitForLoadState('networkidle') — blocked by ESLintconst response = page.waitForResponse('/api/v1/endpoint*');
await someAction();
await response;
expect((await response).status()).toBe(200);await expect(page.getByTestId('element')).toBeVisible();
await expect(page.getByTestId('element')).toContainText('text');
await expect(page.locator('.class')).not.toBeVisible();yarn lint:playwright passes with zero errorsnetworkidle, page.pause(), or test.only() usage (blocked by ESLint)test.slow() (preferred) or test.setTimeout()For reference, see the comprehensive test coverage in: playwright/e2e/Pages/DataContractInheritance.spec.ts
This file demonstrates:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.