diff options
| author | Shohei YOSHIDA <syohex@gmail.com> | 2026-05-19 12:18:39 +0900 |
|---|---|---|
| committer | Shohei YOSHIDA <syohex@gmail.com> | 2026-05-19 12:18:39 +0900 |
| commit | 723d5f2726c13e51121059cff04a5f6cb7c4db88 (patch) | |
| tree | 10ecec69b6f191f69f4bcd22b8b5b303ed593e1d /src/_playwright | |
| parent | Merge pull request #1265 from zsh-users/update-jest (diff) | |
| download | zsh-completions-add-playwright.tar zsh-completions-add-playwright.tar.gz zsh-completions-add-playwright.tar.bz2 zsh-completions-add-playwright.tar.lz zsh-completions-add-playwright.tar.xz zsh-completions-add-playwright.tar.zst zsh-completions-add-playwright.zip | |
Add playwright completionadd-playwright
Diffstat (limited to 'src/_playwright')
| -rw-r--r-- | src/_playwright | 340 |
1 files changed, 340 insertions, 0 deletions
diff --git a/src/_playwright b/src/_playwright new file mode 100644 index 0000000..138e8e3 --- /dev/null +++ b/src/_playwright @@ -0,0 +1,340 @@ +#compdef playwright +# ------------------------------------------------------------------------------ +# Copyright (c) 2026 Github zsh-users - https://github.com/zsh-users +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for playwright 1.60.0 (https://playwright.dev/) +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Shohei Yoshida (https://github.com/syohex) <syohex@gmail.com> +# +# ------------------------------------------------------------------------------ + +_playwright() { + typeset -A opt_args + local context state line + local curcontext="$curcontext" + local ret=1 + + local -a browsers=(chromium firefox webkit) + local -a installable_browsers=(chromium firefox webkit chromium-headless-shell) + local -a target_languages=(javascript playwright-test python python-async python-pytest + csharp csharp-mstest csharp-nunit csharp-xunit java java-junit) + local -a channels=(chrome chrome-beta msedge-dev) + local -a pager_formats=(Letter Legal Tabloid Ledger A0 A1 A2 A3 A4 A5 A6) + local -a loop_providers=(claude copilot opencode vscode vscode-legacy) + local -a trace_modes=(on off on-first-retry on-all-retries retain-on-failure + retain-on-first-failure retain-on-failure-and-retries) + + _arguments -C -A "-*" \ + '(-v --verbose)'{-v,--verbose}'[output the version number]' \ + '(- *)'{-h,--help}'[display help for command]' \ + '1: :_playwright_subcommands' \ + '*::arg:->args' \ + && ret=0 + + case "$state" in + (args) + local -a options=('(- *)'{-h,--help}'[display help for command]') + + case $words[1] in + (help) + options+=('1: :_playwright_subcommands') + ;; + (open|codegen|cr|ff|wk|screenshot|pdf|show-trace|test) + options+=( + '(-b --browser)'{-b,--browser}'[browser to use(default: chromium)]:browser:($browsers)' ) + ;| + (open|codegen|cr|ff|wk|screenshot|pdf) + options+=( + '--block-service-workers[block service workers]' + '--channel[Chromium distribution channel]:channel:($channels)' + '--color-scheme[emulate preferred color scheme]:scheme:(light dark)' + '--device[emulate device(e.g. "iPhone 11")]:device' + '--geolocation[specify geolocation coordinates]:coordinates' + '--ignore-https-errors[ignore https errors]' + '--load-storage[load context storage state from the file]:file:_files' + '--lang[specify language/locale(e.g. "en-GB")]:language' + '--proxy-server[specify proxy server]:proxy' + '--proxy-bypass[comma-separated domains to bypass proxy]:bypass' + '--save-har[save HAR file with all network activity at the end]:file:_files' + '--save-har-glob[filter entries in the HAR by matching URL against this glob pattern]:pattern' + '--save-storage[save context storage state at the end]:file:_files' + '--timezone[time zone to emulate]:time_zone' + '--timeout[timeout for Playwright actions in milliseconds(default: no timeout)]:timeout' + '--user-agent[specify user agent string]:user_agent' + '--user-data-dir[use the specified user data directory instead of a new context]:dir:_files -/' + '--viewport-size[specify browser viewport size in pixels(e.g. "1280, 720")]:size' + '*::url:_urls' + ) + ;| + (install) + options+=( + '--with-deps[install system dependencies for browsers]' + '--dry-run[do not execute installation, only print information]' + '(- *)--list[prints list of browsers from all playwright installations]' + '--force[force reinstall of already installed browsers]' + '--only-shell[only install headless shell when installing chromium]' + '--no-shell[do not install chromium headless shell]' + '*::browser:($installable_browsers)' + ) + ;; + (uninstall) + options+=('--all[remove all browsers used by any Playwright installation from the system]') + ;; + (install-deps) + options+=('--dry-run[do not modify the system]') + ;; + (screenshot|pdf) + options+=( + '--wait-for-selector[wait for selector before taking a screenshot]:selector' + '--wait-for-timeout[wait for timeout in milliseconds before taking a screenshot]:timeout' + '*:: :_files' + ) + ;| + (screenshot) + options+=( + '--full-page[take a full page screenshot]' + '*:: :_files' + ) + ;; + (pdf) + options+=( + '--pager-format[pager format]:format:($pager_formats)' + '*:: :_files' + ) + ;; + (show-trace) + options+=( + '(-h --host)'{-h,--host}'[host to serve trace on]:host' + '(-p --port)'{-p,--port}'[port to serve trace on]:port' + '--stdin[accept trace URLs over stdin to update the viewer]' + '*:: :_files' + ) + ;; + (trace) + _playwright_trace && ret=0 + return ret + ;; + (test) + options+=( + '(-c --config)'{-c,--config}'[configuration file or a test directory]:config:_files' + '--debug[run tests with Playwright Inspector]:mode:(inspector cli)' + '--fail-on-flaky-tests[fail if any test is flagged as flaky]' + '--forbid-only[fail if test.only is called]' + '--fully-parallel[run all tests in parallel]' + '(-g --grep)'{-g,--grep}'[only run tests matching this regular expression]:pattern' + '--global-timeout[maximum time this test suite can run in milliseconds]:timeout' + '--grep-invert[only run tests that do not match this regular expression]:pattern' + '--headed[run tests in headed browsers]' + '--ignore-snapshots[ignore screenshot and snapshot expectations]' + '(-j --workers)'{-j,--workers}'[number of concurrent workers or percentage of logical CPU cores]:workers' + '--last-failed[only re-run the failures]' + '--list[collect all the tests and report them, but do not run]' + '--max-failures[stop after the first N failures]:num' + '--no-deps[do not run project dependencies]' + '--only-changed[only run test files that have been changed between "HEAD" and "ref"]:ref' + '--output[folder for output artifacts(default: "test-results")]:dir:_files -/' + '--pass-with-no-tests[make test run succeed even if no tests were found]' + '*--project[only run tests from the specified list of projects]:project' + '--quiet[suppress stdio]' + '--repeat-each[run each test N times(default: 1)]:num' + '--reporter[reporter to use, comma-separated]:reporter:_playwright_reporters' + '--retries[maximum retry count for flaky tests(default: no retries)]:num' + '--run-agents[run agents to generate the code for page.perform]:agent:(missing all none)' + '--shard[shard tests and execute only the selected shard(e.g. "3/5")]:shard' + '--test-list[path to a file containing a list of tests to run]:file:_files' + '--test-list-invert[path to a file containing a list of tests to skip]:file:_files' + '--timeout[specify test timeout threshold in milliseconds, zero for unlimited(default: 30000)]:timeout' + '--trace[force tracing mode]:mode:($trace_modes)' + '--tsconfig[path to a single tsconfig applicable to all imported files]:file:_files' + '(-u --update-snapshots)'{-u,--update-snapshots}'[update snapshots with actual results]:mode:(all changed missing none)' + '--ui[run tests in interactive UI mode]' + '--ui-host[host to server UI on]:host' + '--ui-port[port to server UI on]:port' + '--update-source-method[choose the way source is updated(default: patch)]:method:(overwrite 3way patch)' + '-x[stop after the first failure]' + '*:: :_files' + ) + ;; + (show-report) + options+=( + '(-h --host)'{-h,--host}'[host to serve report on]:host' + '(-p --port)'{-p,--port}'[port to serve report on]:port' + ) + ;; + (merge-reports) + options+=( + '(-c --config)'{-c,--config}'[configuration file]:file:_files' + '--reporter[reporter to use, comma-separated (default: list)]:reporter:_playwright_reporters' + '*:: :_files -/' + ) + ;; + (clear-cache) + options+=( + '(-c --config)'{-c,--config}'[configuration file or a test directory]:file:_files' + ) + ;; + (init-agents) + options+=( + '--loop[agentic loop provider]:provider:($loop_providers)' + '(-c --config)'{-c,--config}'[configuration file to find a project to use for seed test]:file:_files' + '--project[project to use for seed test]:_files -/' + '--prompts[include prompts in the agent initialization]' + ) + ;; + esac + + _arguments "$options[@]" && ret=0 + ;; + esac + + return ret +} + +(( $+functions[_playwright_subcommands] )) || +_playwright_subcommands() { + local -a commands=( + "open:open page in browser specified via -b, --browser" + "codegen:open page and generate code for user actions" + "install:ensure browsers necessary for this version of Playwright are installed" + "uninstall:remove browsers used by this installation of Playwright from the system" + "install-deps:install dependencies necessary to run browsers" + "cr:open page in Chromium" + "ff:open page in Firefox" + "wk:open page in WebKit" + "screenshot:capture a page screenshot" + "pdf:save page as PDF" + "show-trace:show trace viewer" + "trace:inspect trace files from the command line" + "test:run tests with Playwright Test" + "show-report:show HTML report" + "merge-reports:merge multiple blob reports into a single report" + "clear-cache:clear build and test caches" + "init-agents:Initialize repository agents" + "help:display help for command" + ) + _describe -t commands 'command' commands "$@" +} + +(( $+functions[_playwright_trace] )) || +_playwright_trace() { + local ret=1 + + _arguments -C \ + '(- *)'{-h,--help}'[Print this usage information]' \ + '1: :_playwright_trace_subcommands' \ + '*:: :->arg' \ + && ret=0 + + case $state in + (arg) + local -a options=( + '(- *)'{-h,--help}'[display help for command]' + '*:: :_files' + ) + + case $words[1] in + (help) + options=('1:command:_playwright_trace_subcommands') + ;; + (actions) + options+=( + '--grep[filter actions by title pattern]:pattern' + '--errors-only[only show failed actions]' + ) + ;; + (requests) + options+=( + '--grep[filter by URL pattern]:pattern' + '--method[filter by HTTP method]:method:(DELETE GET HEAD POST PUT CONNECT OPTIONS TRACE PATCH)' + '--status[filter by status code]:code' + '--failed[only show failed request(status >= 400)]' + ) + ;; + (console) + options+=( + '--errors-only[only show errors]' + '--warnings[show errors and warnings]' + '--browser[only browser console messages]' + '--stdio[only stdout/stderr]' + ) + ;; + (snapshot) + options+=( + '--name[snapshot phase]:name:(before input after)' + '--serve[serve snapshot on localhost and keep running]' + ) + ;; + (screenshot|attachment) + options+=('(-o --output)'{-o,--output}'[output file path]:file:_files') + ;; + esac + + _arguments "$options[@]" && ret=0 + ;; + esac + + return ret +} + +(( $+functions[_playwright_trace_subcommands] )) || +_playwright_trace_subcommands() { + local -a commands=( + "open:extract trace file for inspection" + "close:remove extracted trace data" + "actions:list actions in the trace" + "action:show details of a specific action" + "requests:show network requests" + "request:show details of a specific network request" + "console:show console messages" + "errors:show errors with stack traces" + "snapshot:run a playwright-cli command against a DOM snapshot" + "screenshot:save screencast screenshot for an action" + "attachments:list trace attachments" + "attachment:extract a trace attachment by its number" + "install-skill:install SKILL.md for LLM integration" + "help:display help for command" + ) + _describe -t commands 'command' commands "$@" +} + +(( $+functions[_playwright_reporters] )) || +_playwright_reporters() { + local -a reporters=(list line dot json junit null github html blob) + _values -s ',' reporter $reporters +} + +_playwright "$@" + +# Local Variables: +# mode: Shell-Script +# sh-indentation: 2 +# indent-tabs-mode: nil +# sh-basic-offset: 2 +# End: +# vim: ft=zsh sw=2 ts=2 et |
