write-playwright-campaigns — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited write-playwright-campaigns (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.
Read @.ai/Component/Playwright/CONTEXT.md for conventions (testIdentifier, baseContext, Mocha structure, POM usage).
Place campaigns in tests/UI/campaigns/functional/BO/{XX_section}/{XX_subsection}/:
XX_ prefix)XX_descriptiveName.ts01_, filter is 02_, bulk is 03_, position is 04_, tab-specific start at 05_Every campaign follows this structure:
import testContext from '@utils/testContext';
import {expect} from 'chai';
import {
boDashboardPage, boLoginPage, bo{Domain}Page, bo{Domain}CreatePage,
type BrowserContext, Faker{Domain}, type Page, utilsPlaywright,
} from '@prestashop-core/ui-testing';
const baseContext: string = 'functional_BO_{section}_{subsection}_{campaignName}';
describe('BO - {Section} : {Campaign description}', async () => {
let browserContext: BrowserContext;
let page: Page;
before(async function () {
browserContext = await utilsPlaywright.createBrowserContext(this.browser);
page = await utilsPlaywright.newTab(browserContext);
});
after(async () => {
await utilsPlaywright.closeBrowserContext(browserContext);
});
it('should login in BO', async function () {
await testContext.addContextItem(this, 'testIdentifier', 'loginBO', baseContext);
// ...login steps...
});
// ... test steps ...
});01_CRUD{Domain}.ts)Faker{Domain}, save, assert success message02_filterSort{Domain}s.ts)forEach for multiple filter tests03_quickEditAndBulkActions.ts)Conditional — only if bulk actions exist:
04_changePosition.ts)Conditional — only if entity has PositionColumn:
page.dragAndDrop()05_tabName.ts, 06_tabName.ts, ...)Conditional — only for multi-tab forms:
Check tests/UI/commonTests/BO/ for existing reusable describe blocks:
import {createProductTest, deleteProductTest} from '@commonTests/BO/catalog/product';
// Use as pre/post test setup
createProductTest(productData, baseContext);
// ... your test ...
deleteProductTest(productData, baseContext);Import and reuse these instead of duplicating setup/teardown logic.
Conventions (testIdentifier, function() not arrow, feature flag setup, toggle AJAX, drag-and-drop, per-tab campaigns, campaign numbering) are in Playwright/CONTEXT.md. Skill-specific reminders:
@prestashop-core/ui-testing — page objects and data are in the external library~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.