Web Application Testing
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
Test autoconsent via regional proxies in Playwright. An agent skill from duckduckgo/autoconsent.
$ npx skills add duckduckgo/autoconsent --skill proxy-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install duckduckgo/autoconsent proxy-testing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/duckduckgo/autoconsent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/proxy-testing .claude/skills/proxy-testing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "proxy-testing" agent skill from https://github.com/duckduckgo/autoconsent/tree/main/.agents/skills/proxy-testing into .claude/skills/proxy-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proxy-testing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/duckduckgo/autoconsent/tree/main/.agents/skills/proxy-testingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add duckduckgo/autoconsent --skill proxy-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install duckduckgo/autoconsent proxy-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duckduckgo/autoconsent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/proxy-testing .agents/skills/proxy-testing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "proxy-testing" agent skill from https://github.com/duckduckgo/autoconsent/tree/main/.agents/skills/proxy-testing into .agents/skills/proxy-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proxy-testing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add duckduckgo/autoconsent --skill proxy-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install duckduckgo/autoconsent proxy-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duckduckgo/autoconsent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/proxy-testing .cursor/skills/proxy-testing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "proxy-testing" agent skill from https://github.com/duckduckgo/autoconsent/tree/main/.agents/skills/proxy-testing into .cursor/skills/proxy-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proxy-testing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/duckduckgo/autoconsent.git --path .agents/skills/proxy-testing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add duckduckgo/autoconsent --skill proxy-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install duckduckgo/autoconsent proxy-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duckduckgo/autoconsent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/proxy-testing .gemini/skills/proxy-testing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "proxy-testing" agent skill from https://github.com/duckduckgo/autoconsent/tree/main/.agents/skills/proxy-testing into .gemini/skills/proxy-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proxy-testing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install duckduckgo/autoconsent proxy-testingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add duckduckgo/autoconsent --skill proxy-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/duckduckgo/autoconsent.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/proxy-testing .github/skills/proxy-testing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "proxy-testing" agent skill from https://github.com/duckduckgo/autoconsent/tree/main/.agents/skills/proxy-testing into .github/skills/proxy-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proxy-testing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add duckduckgo/autoconsent --skill proxy-testing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install duckduckgo/autoconsent proxy-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duckduckgo/autoconsent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/proxy-testing .opencode/skills/proxy-testing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "proxy-testing" agent skill from https://github.com/duckduckgo/autoconsent/tree/main/.agents/skills/proxy-testing into .opencode/skills/proxy-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "proxy-testing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
proxy-testingTest autoconsent via regional proxies in Playwright. An agent skill from duckduckgo/autoconsent.
Proxy Testing is an agent skill from duckduckgo/autoconsent. Test autoconsent via regional proxies in Playwright. Use when verifying rule changes across regions (US, EU, UK, etc.), or investigating region-dependent CMP behavior.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts.
It sits in Testing & QA, covering Browser testing. It works with Playwright. The licence is MPL-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fbe0a68. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
wohnen.deapi.ipify.orgFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
REGIONAL_PROXY_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Proxy Testing loads about 2k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 817 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from duckduckgo/autoconsent at commit fbe0a68, republished under its MPL-2.0 licence (© duckduckgo). 817 words, ~1,957 tokens.
.claude/skills/proxy-testing/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.This skill provides a JS library to run autoconsent via regional proxies in Playwright. It is the default for regional testing.
Oxylabs remote browsers are available too, through the oxylabs-testing skill. They get past most bot walls (captchas, challenge pages, "access denied" pages) that some sites show to our proxies, but they cost money per session, so use them only for the regions where our proxies don't get you the real site.
Rule changes are verified with a two-level regional policy.
The core region set (default for detection, iteration, and verification) covers us (CCPA), gb (UK GDPR), de (EEA GDPR), plus the reported region from the task when specified (if the reported region is not a supported proxy region, use the closest supported one, e.g. es for pt). Iterate in the single most relevant region; run the full core set once when the fix is stable.
Escalate to the expanded set (us, gb, de, fr, nl, pl, au, ca, jp) if any of these is true:
The remaining GDPR/EEA regions (ch, no, it, es, se, dk) are optional even in an expanded pass: test them only when named in the report or clearly relevant (e.g. the site's ccTLD).
Important! Autoconsent results can have false positives. When testing, always inspect the screenshots and confirm that opt-out was successful.
npm run prepublish # builds dist/autoconsent.playwright.js and rules/rules.jsonEnvironment variables:
REGIONAL_PROXY_<TWO_LETTER_REGION_CODE> (for example, REGIONAL_PROXY_US, REGIONAL_PROXY_GB, REGIONAL_PROXY_AU, etc.) - a complete proxy URL with an http://, https://, or socks5:// scheme. Examples: socks5://usc-socks-tr-cluster.duckduckgo.com:80, https://proxy.example.com:443.REGIONAL_PROXY_USERNAME and REGIONAL_PROXY_PASSWORD (optional) - shared credentials, passed to Playwright for https:// proxies only. They are ignored for http:// and socks5:// proxies.Never embed credentials in a proxy URL.
Test one URL:
import { formatResult, testUrl } from './.agents/skills/proxy-testing/scripts/regional-proxy.mjs';
const result = await testUrl('https://www.wohnen.de/', 'de');
console.log(formatResult(result));Test multiple regions:
import { formatResult, testRegions } from './.agents/skills/proxy-testing/scripts/regional-proxy.mjs';
const results = await testRegions('https://www.wohnen.de/', ['us', 'de', 'fr']);
for (const result of results) {
console.log(formatResult(result));
}Use an existing page:
import { launchRegionalProxyBrowser, testPage } from './.agents/skills/proxy-testing/scripts/regional-proxy.mjs';
const browser = await launchRegionalProxyBrowser('de');
const page = await browser.newPage();
const result = await testPage(page, 'https://www.wohnen.de/', 'de');
await browser.close();Get proxy config for Playwright Test:
import { defineConfig } from '@playwright/test';
import { buildProxyConfig } from './.agents/skills/proxy-testing/scripts/regional-proxy.mjs';
export default defineConfig({
use: {
proxy: buildProxyConfig('us'),
},
});testUrl(url, regionKey, options?) — test one URL in a single region; launches a proxied browser, runs autoconsent, returns a TestResult.testRegions(url, regions?, options?) — test one URL across several regions (defaults to CORE_REGIONS), a fresh browser per region; returns TestResult[]. Remember to include the reported region when not already covered.CORE_REGIONS — the core region set (default); add the reported region when not already covered.EXPANDED_REGIONS — the expanded region set used on escalation.ALL_REGIONS — all supported regions.testPage(page, url, regionKey, options?) — run a full test on a page you created yourself (you own the browser/context); returns a TestResult.injectAutoconsent(page, options?) — set up isolated-world injection; call before page.goto(). Returns a context (received, hasMessage, waitForCompletion, waitForMessage, collectResult).buildProxyConfig(regionKey) — build the Playwright proxy object for a region from its env vars; returns { server, username, password } for https:// proxies when credentials are set, otherwise { server }.launchRegionalProxyBrowser(regionKey, options?) — launch a Chromium browser routed through the region's proxy.formatResult(result) — format a TestResult as a human-readable summary line.Options (all optional):
action — 'optOut' (default), 'optIn', or null to only detect (no opt-out/opt-in performed).screenshotsDir — directory for the final screenshots (default: test-results/regional-proxy).navigationTimeout — page.goto timeout in ms (default 45000).completionTimeout — max wait for autoconsent to finish opt-out/opt-in in ms (default 45000).detectionTimeout — max wait for cmpDetected before giving up (default: completionTimeout).headless — run Chromium headless (default true).launchOptions — extra options merged into chromium.launch() (e.g. args); the regional proxy is always applied on top.import { launchRegionalProxyBrowser } from './.agents/skills/proxy-testing/scripts/regional-proxy.mjs';
const browser = await launchRegionalProxyBrowser('us');
const page = await browser.newPage();
await page.goto('https://api.ipify.org?format=json', { waitUntil: 'domcontentloaded', timeout: 30000 });
console.log(await page.textContent('body'));
await browser.close();npm run build-rules after changing rule JSON.us, gb, de + reported region); escalate to the expanded set per the policy above.{ server, username, password }); Chromium cannot authenticate to SOCKS proxies.injectAutoconsent(page) before page.goto() so the init script is installed before page scripts run.eval snippets run in the page's main world, matching the extension. Chromium only.oxylabs-testing skill, and say in the report which regions were tested through Oxylabs. If Oxylabs is blocked too or not available, retest over a direct connection and state explicitly in the report that the result is unproxied. If direct access is blocked too, ask the triager for the popup's HTML pasted from their own browser as a last resort, and note that the rule was written from pasted markup rather than a live run.oxylabs-testing lives in .agents/lib/regional-testing/; change shared behavior there.© duckduckgo, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in .agents/skills/proxy-testing of duckduckgo/autoconsent.
Open the folder on GitHubat commit fbe0a68
Proxy Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Proxy Testing this skillduckduckgo/autoconsent | 130 | — | ~2k | Automated safety check: Pass | MPL-2.0 | |
| Web Application Testinganthropics/skills | 180k | 51 repos | ~966 | Automated safety check: Pass | Apache-2.0 | |
| Playwright CLIsanity-io/sanity | 6.4k | 18 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Write and Verify Playwright Testsappsmithorg/appsmith | 41k | — | ~2.9k | Automated safety check: Notes | Apache-2.0 | |
| playwright-cli Browser Automationgithub/gh-aw | 5.4k | 23 repos | ~2.8k | Automated safety check: Pass | MIT | |
| Cucumber and Playwright E2E Testslanggenius/dify | 158k | — | ~682 | Automated safety check: Pass | Custom licence |
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
sanity-io/sanity
Automates browser interactions for web testing, form filling, screenshots, and data extraction.
appsmithorg/appsmith
Writes a Playwright end-to-end test from a prompt, runs it against a live Appsmith deployment and retries with fixes up to three times until it passes.
github/gh-aw
Drives a real browser from the command line with playwright-cli to open pages, interact, mock requests, save state and work with Playwright tests.
langgenius/dify
Guides changes and reviews of the Cucumber and Playwright end-to-end suite under `e2e/`: feature files, step definitions, support code, tags, locators and assertions.
langflow-ai/langflow
Write and review Playwright E2E tests for Langflow. An agent skill from langflow-ai/langflow.
duckduckgo/autoconsent
Test autoconsent rules across geographic regions using Oxylabs Agent Browser remote browsers.
duckduckgo/autoconsent
Iteratively improves the heuristic button regex patterns in lib/heuristic-patterns.ts against data/labelled-button-texts.csv.
duckduckgo/autoconsent
Search PublicWWW to find websites using specific HTML/JS/CSS snippets.
duckduckgo/autoconsent
Verifies an autoconsent pull request by running local CI checks, reviewing rule quality, and inspecting Jenkins E2E results.
Works with
Categories
Test autoconsent via regional proxies in Playwright. An agent skill from duckduckgo/autoconsent. Proxy Testing is an agent skill from duckduckgo/autoconsent. Test autoconsent via regional proxies in Playwright.
Proxy Testing fits situations like: verifying rule changes across regions (US; investigating region-dependent CMP behavior.
Run `npx skills add duckduckgo/autoconsent --skill proxy-testing -a claude-code`. Or copy the skill folder (.agents/skills/proxy-testing in duckduckgo/autoconsent) into .claude/skills/proxy-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add duckduckgo/autoconsent --skill proxy-testing -a codex`. Or copy the skill folder (.agents/skills/proxy-testing in duckduckgo/autoconsent) into .agents/skills/proxy-testing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add duckduckgo/autoconsent --skill proxy-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/proxy-testing, .gemini/skills/proxy-testing, .github/skills/proxy-testing and .opencode/skills/proxy-testing in your project.
Going by SKILL.md and its folder, Proxy Testing needs JavaScript for the scripts in its folder, the command-line tools its instructions call (npm) and credentials named REGIONAL_PROXY_PASSWORD. Our summary lists: Node.js.
SKILL.md names 2 domains. In commands or code: wohnen.de and api.ipify.org; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Proxy Testing is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Proxy Testing: Web Application Testing (anthropics/skills, 180k stars), Playwright CLI (sanity-io/sanity, 6.4k stars), Write and Verify Playwright Tests (appsmithorg/appsmith, 41k stars) and playwright-cli Browser Automation (github/gh-aw, 5.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
duckduckgo (a GitHub organization) maintains it in duckduckgo/autoconsent, which has 130 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 9, 2026.
Source: duckduckgo/autoconsent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.