Playwright MCP
resmiServer MCP Playwright resmi untuk otomatisasi browser, inspeksi halaman, tangkapan layar, dan interaksi web dari Claude, Cursor, serta agen AI lainnya.
Apa yang bisa Anda lakukan dengan Playwright MCP?
- Navigasi dan interaksi dengan halaman web — minta asisten untuk membuka URL, mengklik elemen, mengisi formulir, atau mengekstrak snapshot aksesibilitas terstruktur menggunakan otomatisasi browser Playwright.
- Konfigurasi perilaku browser — atur jenis browser, ukuran viewport, emulasi perangkat, atau agen pengguna melalui argumen
--browser,--device,--viewport-size, dan--user-agent. - Kelola sesi dan autentikasi — gunakan profil persisten (
--user-data-dir), sesi terisolasi (--isolated), atau file status penyimpanan (--storage-state) untuk mengontrol status login di berbagai sesi. - Hubungkan ke browser yang sudah berjalan — lampirkan ke instance Chrome atau Edge yang sedang berjalan dengan bendera
--extensionuntuk menggunakan kembali sesi yang sudah login tanpa autentikasi ulang. - Kontrol output dan snapshot — tangkap pesan konsol, log jaringan, dan snapshot aksesibilitas ke file atau stdout menggunakan
--output-dir,--output-mode, dan--snapshot-mode.
Dokumentasi
Playwright MCP
Server Model Context Protocol (MCP) yang menyediakan kemampuan otomatisasi peramban menggunakan Playwright. Server ini memungkinkan LLM untuk berinteraksi dengan halaman web melalui snapshot aksesibilitas terstruktur, sehingga tidak memerlukan tangkapan layar atau model yang disetel secara visual.
Playwright MCP vs Playwright CLI
Paket ini menyediakan antarmuka MCP ke Playwright. Jika Anda menggunakan agen pengkodean, Anda mungkin lebih diuntungkan dengan menggunakan CLI+SKILLS.
-
CLI: Agen pengkodean modern semakin menyukai alur kerja berbasis CLI yang diekspos sebagai SKILL daripada MCP karena pemanggilan CLI lebih hemat token: mereka menghindari pemuatan skema alat besar dan pohon aksesibilitas yang verbose ke dalam konteks model, memungkinkan agen bertindak melalui perintah ringkas yang dibuat khusus. Ini membuat CLI + SKILLS lebih cocok untuk agen pengkodean throughput tinggi yang harus menyeimbangkan otomatisasi peramban dengan basis kode besar, pengujian, dan penalaran dalam jendela konteks terbatas.
Pelajari lebih lanjut tentang Playwright CLI dengan SKILLS. -
MCP: MCP tetap relevan untuk loop agen khusus yang diuntungkan dari status persisten, introspeksi kaya, dan penalaran iteratif atas struktur halaman, seperti otomatisasi eksplorasi, pengujian pemulihan mandiri, atau alur kerja otonom jangka panjang di mana mempertahankan konteks peramban berkelanjutan lebih penting daripada masalah biaya token.
Fitur Utama
- Cepat dan ringan. Menggunakan pohon aksesibilitas Playwright, bukan input berbasis piksel.
- Ramah LLM. Tidak memerlukan model visi, beroperasi murni pada data terstruktur.
- Penerapan alat deterministik. Menghindari ambiguitas yang umum terjadi pada pendekatan berbasis tangkapan layar.
Persyaratan
- Node.js 18 atau lebih baru
- VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie atau klien MCP lainnya
Memulai
Pertama, instal server Playwright MCP dengan klien Anda.
Konfigurasi standar berfungsi di sebagian besar alat:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Amp
Tambahkan melalui layar pengaturan ekstensi Amp VS Code atau dengan memperbarui file settings.json Anda:
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
Pengaturan Amp CLI:
Tambahkan melalui perintah amp mcp add di bawah ini
amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity
Tambahkan melalui pengaturan Antigravity atau dengan memperbarui file konfigurasi Anda:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Claude Code
Gunakan Claude Code CLI untuk menambahkan server Playwright MCP:
claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop
Ikuti panduan instalasi MCP, gunakan konfigurasi standar di atas.
Cline
Ikuti instruksi di bagian Mengonfigurasi Server MCP
Contoh: Pengaturan Lokal
Tambahkan yang berikut ini ke file cline_mcp_settings.json Anda:
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}
Codex
Gunakan Codex CLI untuk menambahkan server Playwright MCP:
codex mcp add playwright npx "@playwright/mcp@latest"
Atau, buat atau edit file konfigurasi ~/.codex/config.toml dan tambahkan:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Untuk informasi lebih lanjut, lihat dokumentasi Codex MCP.
Copilot
Gunakan Copilot CLI untuk menambahkan server Playwright MCP secara interaktif:
/mcp add
Atau, buat atau edit file konfigurasi ~/.copilot/mcp-config.json dan tambahkan:
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}
Untuk informasi lebih lanjut, lihat dokumentasi Copilot CLI.
Cursor
Klik tombol untuk menginstal:
Atau instal secara manual:
Buka Cursor Settings -> MCP -> Add new MCP Server. Beri nama sesuai keinginan, gunakan tipe command dengan perintah npx @playwright/mcp@latest. Anda juga dapat memverifikasi konfigurasi atau menambahkan argumen seperti perintah melalui klik Edit.
Factory
Gunakan Factory CLI untuk menambahkan server Playwright MCP:
droid mcp add playwright "npx @playwright/mcp@latest"
Atau, ketik /mcp dalam Factory droid untuk membuka UI interaktif untuk mengelola server MCP.
Untuk informasi lebih lanjut, lihat dokumentasi Factory MCP.
Gemini CLI
Ikuti panduan instalasi MCP, gunakan konfigurasi standar di atas.
Goose
Klik tombol untuk menginstal:
Atau instal secara manual:
Buka Advanced settings -> Extensions -> Add custom extension. Beri nama sesuai keinginan, gunakan tipe STDIO, dan atur command ke npx @playwright/mcp. Klik "Add Extension".
Grok
Gunakan Grok CLI untuk menambahkan server Playwright MCP:
grok mcp add playwright -- npx @playwright/mcp@latest
Atau, buat atau edit file konfigurasi ~/.grok/config.toml dan tambahkan:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Untuk informasi lebih lanjut, lihat dokumentasi Grok MCP.
Junie
Untuk menambahkan server Playwright MCP di Junie CLI:
- Ketik
/mcp - Tekan
Ctrl+Auntuk menambahkan server MCP baru - Pilih Playwright dari daftar
Atau, tambahkan ke .junie/mcp/mcp.json:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
Untuk informasi lebih lanjut, lihat dokumentasi konfigurasi Junie MCP.
Kiro
Ikuti dokumentasi Server MCP. Misalnya di .kiro/settings/mcp.json:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
LM Studio
Klik tombol untuk menginstal:
Atau instal secara manual:
Buka Program di bilah sisi kanan -> Install -> Edit mcp.json. Gunakan konfigurasi standar di atas.
opencode
Ikuti dokumentasi Server MCP. Misalnya di ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
Qodo Gen
Buka panel obrolan Qodo Gen di VSCode atau IntelliJ → Hubungkan lebih banyak alat → + Tambah MCP baru → Tempel konfigurasi standar di atas.
Klik Simpan.
VS Code
Klik tombol untuk menginstal:
Atau instal secara manual:
Ikuti panduan instalasi MCP, gunakan konfigurasi standar di atas. Anda juga dapat menginstal server Playwright MCP menggunakan VS Code CLI:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
Setelah instalasi, server Playwright MCP akan tersedia untuk digunakan dengan agen GitHub Copilot Anda di VS Code.
Warp
Buka Settings -> AI -> Manage MCP Servers -> + Add untuk menambahkan Server MCP. Gunakan konfigurasi standar di atas.
Atau, gunakan perintah garis miring /add-mcp di prompt Warp dan tempel konfigurasi standar dari atas:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Windsurf
Ikuti dokumentasi Windsurf MCP. Gunakan konfigurasi standar di atas.
Konfigurasi
Server Playwright MCP mendukung argumen berikut. Argumen tersebut dapat diberikan dalam konfigurasi JSON di atas, sebagai bagian dari daftar "args":
| Opsi | Deskripsi |
|---|---|
| --allowed-hosts <hosts...> | daftar host yang dipisahkan koma yang diizinkan untuk dilayani oleh server ini. Default-nya adalah host tempat server terikat. Gunakan '*' untuk menonaktifkan pemeriksaan host. env PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | daftar origin TRUSTED yang dipisahkan titik koma yang diizinkan untuk diminta oleh browser. Default-nya adalah mengizinkan semua. Penting: tidak berfungsi sebagai batas keamanan dan tidak memengaruhi pengalihan. env PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
| --allow-unrestricted-file-access | izinkan akses ke file di luar root ruang kerja. Juga mengizinkan akses tak terbatas ke URL file://. Secara default, akses ke sistem file dibatasi hanya pada direktori root ruang kerja (atau cwd jika tidak ada root yang dikonfigurasi), dan navigasi ke URL file:// diblokir. env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
| --blocked-origins | daftar origin yang dipisahkan titik koma untuk diblokir agar tidak diminta oleh browser. Daftar blokir dievaluasi sebelum daftar izinkan. Jika digunakan tanpa daftar izinkan, permintaan yang tidak cocok dengan daftar blokir tetap diizinkan. Penting: tidak berfungsi sebagai batas keamanan dan tidak memengaruhi pengalihan. env PLAYWRIGHT_MCP_BLOCKED_ORIGINS |
| --block-service-workers | blokir service worker env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS |
| --browser | browser atau saluran chrome yang akan digunakan, nilai yang mungkin: chrome, firefox, webkit, msedge. env PLAYWRIGHT_MCP_BROWSER |
| --caps | daftar kapabilitas tambahan yang dipisahkan koma untuk diaktifkan, nilai yang mungkin: vision, pdf, devtools. env PLAYWRIGHT_MCP_CAPS |
| --cdp-endpoint | endpoint CDP untuk terhubung. env PLAYWRIGHT_MCP_CDP_ENDPOINT |
| --cdp-header <headers...> | header CDP yang akan dikirim dengan permintaan koneksi, dapat ditentukan beberapa kali. env PLAYWRIGHT_MCP_CDP_HEADERS |
| --cdp-timeout | batas waktu dalam milidetik untuk menghubungkan ke endpoint CDP, default 30000ms env PLAYWRIGHT_MCP_CDP_TIMEOUT |
| --codegen | tentukan bahasa yang akan digunakan untuk pembuatan kode, nilai yang mungkin: "typescript", "none". Default adalah "typescript". env PLAYWRIGHT_MCP_CODEGEN |
| --config | path ke file konfigurasi. env PLAYWRIGHT_MCP_CONFIG |
| --console-level | level pesan konsol yang akan dikembalikan: "error", "warning", "info", "debug". Setiap level menyertakan pesan dari level yang lebih parah. env PLAYWRIGHT_MCP_CONSOLE_LEVEL |
| --device | perangkat yang akan diemulasikan, misalnya: "iPhone 15" env PLAYWRIGHT_MCP_DEVICE |
| --mobile | emulasikan perangkat seluler generik (Pixel 10 untuk Chromium, iPhone 17 untuk WebKit). Halaman seluler biasanya lebih ringan, yang menghemat token. Tidak dapat digabungkan dengan --device. env PLAYWRIGHT_MCP_MOBILE |
| --executable-path | path ke executable browser. env PLAYWRIGHT_MCP_EXECUTABLE_PATH |
| --extension | Hubungkan ke instance browser yang sedang berjalan (hanya Edge/Chrome). Memerlukan "Playwright Extension" untuk diinstal. env PLAYWRIGHT_MCP_EXTENSION |
| --endpoint | endpoint browser terikat untuk terhubung. env PLAYWRIGHT_MCP_ENDPOINT |
| --grant-permissions <permissions...> | Daftar izin yang akan diberikan ke konteks browser, misalnya "geolocation", "clipboard-read", "clipboard-write". env PLAYWRIGHT_MCP_GRANT_PERMISSIONS |
| --headless | jalankan browser dalam mode headless, default-nya headed env PLAYWRIGHT_MCP_HEADLESS |
| --host | host untuk mengikat server. Default adalah localhost. Gunakan 0.0.0.0 untuk mengikat ke semua antarmuka. env PLAYWRIGHT_MCP_HOST |
| --ignore-https-errors | abaikan kesalahan https env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS |
| --init-page <path...> | path ke file TypeScript untuk dievaluasi pada objek halaman Playwright env PLAYWRIGHT_MCP_INIT_PAGE |
| --init-script <path...> | path ke file JavaScript untuk ditambahkan sebagai skrip inisialisasi. Skrip akan dievaluasi di setiap halaman sebelum skrip halaman apa pun. Dapat ditentukan beberapa kali. env PLAYWRIGHT_MCP_INIT_SCRIPT |
| --isolated | simpan profil browser di memori, jangan simpan ke disk. env PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | apakah akan mengirim respons gambar ke klien. Bisa "allow" atau "omit", Default-nya "allow". env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | nonaktifkan sandbox untuk semua jenis proses yang biasanya di-sandbox. env PLAYWRIGHT_MCP_NO_SANDBOX |
| --output-dir | path ke direktori untuk file output. env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | Ambang batas untuk mengeluarkan file output lama, dalam byte. env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --output-mode | apakah akan menyimpan snapshot, pesan konsol, log jaringan ke file atau ke output standar. Bisa "file" atau "stdout". Default adalah "stdout". env PLAYWRIGHT_MCP_OUTPUT_MODE |
| --port | port yang akan didengarkan untuk transport SSE. env PLAYWRIGHT_MCP_PORT |
| --proxy-bypass | domain yang dipisahkan koma untuk melewati proxy, misalnya ".com,chromium.org,.domain.com" env PLAYWRIGHT_MCP_PROXY_BYPASS |
| --proxy-server | tentukan server proxy, misalnya "http://myproxy:3128" atau "socks5://myproxy:8080" env PLAYWRIGHT_MCP_PROXY_SERVER |
| --sandbox | aktifkan sandbox untuk semua jenis proses yang biasanya tidak di-sandbox. env PLAYWRIGHT_MCP_SANDBOX |
| --save-session | Apakah akan menyimpan sesi Playwright MCP ke direktori output. env PLAYWRIGHT_MCP_SAVE_SESSION |
| --secrets | path ke file yang berisi secrets dalam format dotenv env PLAYWRIGHT_MCP_SECRETS_FILE |
| --shared-browser-context | gunakan kembali konteks browser yang sama di antara semua klien HTTP yang terhubung. env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT |
| --snapshot-mode | saat mengambil snapshot untuk respons, tentukan mode yang akan digunakan. Bisa "full" atau "none". Default adalah "full". env PLAYWRIGHT_MCP_SNAPSHOT_MODE |
| --storage-state | path ke file status penyimpanan untuk sesi terisolasi. env PLAYWRIGHT_MCP_STORAGE_STATE |
| --test-id-attribute | tentukan atribut yang akan digunakan untuk id pengujian, default-nya "data-testid" env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | tentukan batas waktu tindakan dalam milidetik, default 5000ms env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | tentukan batas waktu navigasi dalam milidetik, default 60000ms env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --user-agent | tentukan string user agent env PLAYWRIGHT_MCP_USER_AGENT |
| --user-data-dir | path ke direktori data pengguna. Jika tidak ditentukan, direktori sementara akan dibuat. env PLAYWRIGHT_MCP_USER_DATA_DIR |
| --viewport-size | tentukan ukuran viewport browser dalam piksel, misalnya "1280x720" env PLAYWRIGHT_MCP_VIEWPORT_SIZE |
Profil pengguna
Anda dapat menjalankan Playwright MCP dengan profil persisten seperti browser biasa (default), dalam konteks terisolasi untuk sesi pengujian, atau terhubung ke browser Anda yang sudah ada menggunakan ekstensi browser.
Profil persisten
Semua informasi yang masuk akan disimpan dalam profil persisten, Anda dapat menghapusnya di antara sesi jika ingin menghapus status offline.
Profil persisten terletak di lokasi berikut dan Anda dapat menimpanya dengan argumen --user-data-dir.
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}
{workspace-hash} berasal dari root ruang kerja klien MCP, sehingga proyek yang berbeda mendapatkan profil terpisah secara otomatis.
[!PENTING] Profil persisten hanya dapat digunakan oleh satu instance browser pada satu waktu, sehingga klien MCP bersamaan yang berbagi ruang kerja yang sama akan bentrok. Untuk menjalankan beberapa klien secara paralel, mulai setiap klien tambahan dengan
--isolatedatau arahkan ke--user-data-diryang berbeda.
Terisolasi
Dalam mode terisolasi, setiap sesi dimulai dalam profil terisolasi. Setiap kali Anda meminta MCP untuk menutup browser,
sesi ditutup dan semua status penyimpanan untuk sesi ini hilang. Anda dapat memberikan status penyimpanan awal
ke browser melalui contextOptions konfigurasi atau melalui argumen --storage-state. Pelajari lebih lanjut tentang status
penyimpanan di sini.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}
Ekstensi Browser
Playwright MCP Chrome Extension memungkinkan Anda terhubung ke tab browser yang sudah ada dan memanfaatkan sesi masuk serta status browser Anda. Lihat microsoft/playwright › packages/extension untuk petunjuk instalasi dan pengaturan.
Status awal
Ada beberapa cara untuk memberikan status awal ke konteks browser atau halaman.
Untuk status penyimpanan, Anda dapat:
- Mulai dengan direktori data pengguna menggunakan argumen
--user-data-dir. Ini akan menyimpan semua data browser di antara sesi. - Mulai dengan file status penyimpanan menggunakan argumen
--storage-state. Ini akan memuat cookie dan penyimpanan lokal dari file ke dalam konteks browser terisolasi.
Untuk status halaman, Anda dapat menggunakan:
--init-pageuntuk menunjuk ke file TypeScript yang akan dievaluasi pada objek halaman Playwright. Ini memungkinkan Anda menjalankan kode arbitrer untuk menyiapkan halaman.
// init-page.ts
export default async ({ page }) => {
await page.context().grantPermissions(['geolocation']);
await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
await page.setViewportSize({ width: 1280, height: 720 });
};
--init-scriptuntuk menunjuk ke file JavaScript yang akan ditambahkan sebagai skrip inisialisasi. Skrip akan dievaluasi di setiap halaman sebelum skrip halaman apa pun. Ini berguna untuk menimpa API browser atau menyiapkan lingkungan.
// init-script.js
window.isPlaywrightMCP = true;
File konfigurasi
Server Playwright MCP dapat dikonfigurasi menggunakan file konfigurasi JSON. Anda dapat menentukan file konfigurasi
menggunakan opsi baris perintah --config:
npx @playwright/mcp@latest --config path/to/config.json
Skema file konfigurasi
{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record<string, string>;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server. May be a
* WebSocket URL string, or a [ConnectOptions] object that mirrors the
* `connectOptions` shape used by the test runner. When passed as an object,
* `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
* underlying connect call.
*/
remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright Extension" to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory to save output files.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/
imageResponses?: 'allow' | 'omit';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'none';
}
Server MCP mandiri
Saat menjalankan browser headed pada sistem tanpa display atau dari proses worker IDE,
jalankan server MCP dari lingkungan dengan DISPLAY dan berikan flag --port untuk mengaktifkan transport HTTP.
npx @playwright/mcp@latest --port 8931
Dan kemudian di konfigurasi klien MCP, atur url ke endpoint HTTP:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
Keamanan
Playwright MCP bukan batas keamanan. Lihat Praktik Terbaik Keamanan MCP untuk panduan mengamankan deployment Anda.
Docker
CATATAN: Implementasi Docker saat ini hanya mendukung chromium headless.
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}
Atau jika Anda lebih suka menjalankan kontainer sebagai layanan yang berjalan lama alih-alih membiarkan klien MCP memunculkannya, gunakan:
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
/app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0
Server akan mendengarkan pada port host 8931 dan dapat dijangkau oleh klien MCP mana pun.
Anda dapat membangun image Docker sendiri.
docker build -t mcr.microsoft.com/playwright/mcp .
Penggunaan terprogram
import http from 'http';
import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => {
// ...
// Creates a headless Playwright MCP server with SSE transport
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
const transport = new SSEServerTransport('/messages', res);
await connection.connect(transport);
// ...
});
Alat
Otomatisasi inti
- **browser_click**- Judul: Klik
- Deskripsi: Lakukan klik pada halaman web
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unikdoubleClick(boolean, opsional): Apakah akan melakukan klik ganda alih-alih klik tunggalbutton(string, opsional): Tombol untuk diklik, default kirimodifiers(array, opsional): Tombol pengubah yang akan ditekan
- Hanya-baca: false
- browser_close
- Judul: Tutup peramban
- Deskripsi: Tutup halaman
- Parameter: Tidak ada
- Hanya-baca: false
- browser_console_messages
- Judul: Dapatkan pesan konsol
- Deskripsi: Mengembalikan semua pesan konsol
- Parameter:
level(string): Tingkat pesan konsol yang akan dikembalikan. Setiap tingkat mencakup pesan dari tingkat yang lebih parah. Default "info".all(boolean, opsional): Kembalikan semua pesan konsol sejak awal sesi, bukan hanya sejak navigasi terakhir. Default false.filename(string, opsional): Nama file untuk menyimpan pesan konsol. Jika tidak disediakan, pesan dikembalikan sebagai teks.
- Hanya-baca: true
- browser_drag
- Judul: Seret mouse
- Deskripsi: Lakukan seret dan lepas antara dua elemen
- Parameter:
startElement(string, opsional): Deskripsi elemen sumber yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elemenstartTarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unikendElement(string, opsional): Deskripsi elemen target yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elemenendTarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
- Hanya-baca: false
- browser_drop
- Judul: Jatuhkan file atau data ke elemen
- Deskripsi: Jatuhkan file atau data bertipe MIME ke elemen, seolah diseret dari luar halaman. Setidaknya salah satu dari "paths" atau "data" harus disediakan.
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unikpaths(array, opsional): Jalur absolut ke file yang akan dijatuhkan ke elemen.data(object, opsional): Data yang akan dijatuhkan, sebagai peta tipe MIME ke nilai string (mis. {"text/plain": "halo", "text/uri-list": "https://example.com"}).
- Hanya-baca: false
- browser_evaluate
- Judul: Evaluasi JavaScript
- Deskripsi: Evaluasi ekspresi JavaScript pada halaman atau elemen
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string, opsional): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unikfunction(string): () => { /* kode / } atau (element) => { / kode */ } ketika elemen disediakanfilename(string, opsional): Nama file untuk menyimpan hasil. Jika tidak disediakan, hasil dikembalikan sebagai teks.
- Hanya-baca: false
- browser_file_upload
- Judul: Unggah file
- Deskripsi: Unggah satu atau beberapa file
- Parameter:
paths(array, opsional): Jalur absolut ke file yang akan diunggah. Bisa file tunggal atau beberapa file. Jika dihilangkan, pemilih file dibatalkan.
- Hanya-baca: false
- browser_fill_form
- Judul: Isi formulir
- Deskripsi: Isi beberapa bidang formulir
- Parameter:
fields(array): Bidang yang akan diisi
- Hanya-baca: false
- browser_find
- Judul: Temukan di snapshot halaman
- Deskripsi: Cari snapshot aksesibilitas halaman saat ini untuk teks atau ekspresi reguler. Mengembalikan node snapshot yang cocok dengan beberapa baris konteks sekitarnya (seperti cuplikan pencarian), masing-masing ditampilkan di bawah jalurnya dari akar pohon, yang lebih murah daripada menangkap seluruh snapshot ketika Anda hanya perlu menemukan elemen dan ref-nya.
- Parameter:
text(string, opsional): Teks biasa untuk dicari di snapshot halaman (pencocokan substring tidak peka huruf besar/kecil). Sediakan teks atau regex, jangan keduanya.regex(string, opsional): Ekspresi reguler untuk dicari di snapshot halaman. Pencocokan peka huruf besar/kecil secara default; bungkus pola dalam garis miring untuk menambahkan flag, mis. "/error/i" untuk tidak peka huruf besar/kecil. Sediakan teks atau regex, jangan keduanya.
- Hanya-baca: true
- browser_handle_dialog
- Judul: Tangani dialog
- Deskripsi: Tangani dialog
- Parameter:
accept(boolean): Apakah akan menerima dialog.promptText(string, opsional): Teks prompt dalam kasus dialog prompt.
- Hanya-baca: false
- browser_hover
- Judul: Arahkan mouse
- Deskripsi: Arahkan kursor ke elemen di halaman
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
- Hanya-baca: false
- browser_navigate
- Judul: Navigasi ke URL
- Deskripsi: Navigasi ke URL
- Parameter:
url(string): URL yang akan dinavigasi
- Hanya-baca: false
- browser_navigate_back
- Judul: Kembali
- Deskripsi: Kembali ke halaman sebelumnya dalam riwayat
- Parameter: Tidak ada
- Hanya-baca: false
- browser_network_request
- Judul: Tampilkan detail permintaan jaringan
- Deskripsi: Mengembalikan detail lengkap (header dan body) dari satu permintaan jaringan, atau satu bagian jika
partdiatur. Gunakan nomor dari browser_network_requests. - Parameter:
index(integer): Indeks berbasis 1 dari permintaan, seperti yang dicetak oleh browser_network_requests.part(string, opsional): Kembalikan hanya bagian permintaan ini. Abaikan untuk mengembalikan detail lengkap.filename(string, opsional): Nama file untuk menyimpan hasil. Jika tidak disediakan, output dikembalikan sebagai teks.
- Hanya-baca: true
- browser_network_requests
- Judul: Daftar permintaan jaringan
- Deskripsi: Mengembalikan daftar bernomor dari permintaan jaringan sejak memuat halaman. Gunakan browser_network_request dengan nomor untuk mendapatkan detail lengkap.
- Parameter:
static(boolean): Apakah akan menyertakan sumber daya statis yang berhasil seperti gambar, font, skrip, dll. Default false.filter(string, opsional): Hanya kembalikan permintaan yang URL-nya cocok dengan regexp ini (mis. "/api/.*user").filename(string, opsional): Nama file untuk menyimpan permintaan jaringan. Jika tidak disediakan, permintaan dikembalikan sebagai teks.
- Hanya-baca: true
- browser_press_key
- Judul: Tekan tombol
- Deskripsi: Tekan tombol pada keyboard
- Parameter:
key(string): Nama tombol yang akan ditekan atau karakter yang akan dihasilkan, sepertiArrowLeftataua
- Hanya-baca: false
- browser_resize
- Judul: Ubah ukuran jendela peramban
- Deskripsi: Ubah ukuran jendela peramban
- Parameter:
width(number): Lebar jendela perambanheight(number): Tinggi jendela peramban
- Hanya-baca: false
- browser_run_code_unsafe
- Judul: Jalankan kode Playwright (tidak aman)
- Deskripsi: Jalankan cuplikan kode Playwright. Tidak aman: mengeksekusi JavaScript arbitrer dalam proses server Playwright dan setara dengan RCE.
- Parameter:
code(string, opsional): Fungsi JavaScript yang berisi kode Playwright untuk dieksekusi. Ini akan dipanggil dengan satu argumen, page, yang dapat Anda gunakan untuk interaksi halaman apa pun. Misalnya:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(string, opsional): Muat kode dari file yang ditentukan. Jika kode dan nama file disediakan, kode akan diabaikan.
- Hanya-baca: false
- browser_select_option
- Judul: Pilih opsi
- Deskripsi: Pilih opsi di dropdown
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unikvalues(array): Array nilai yang akan dipilih di dropdown. Ini bisa berupa nilai tunggal atau beberapa nilai.
- Hanya-baca: false
- browser_snapshot
- Judul: Snapshot halaman
- Deskripsi: Tangkap snapshot aksesibilitas halaman saat ini, ini lebih baik daripada screenshot
- Parameter:
target(string, opsional): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unikfilename(string, opsional): Simpan snapshot ke file markdown alih-alih mengembalikannya dalam respons.depth(number, opsional): Batasi kedalaman pohon snapshotboxes(boolean, opsional): Sertakan kotak pembatas setiap elemen sebagai [box=x,y,width,height] di snapshot. Koordinat relatif terhadap viewport, dalam piksel CSS (Element.getBoundingClientRect)
- Hanya-baca: true
- browser_take_screenshot
- Judul: Ambil screenshot
- Deskripsi: Ambil screenshot halaman saat ini. Anda tidak dapat melakukan tindakan berdasarkan screenshot, gunakan browser_snapshot untuk tindakan.
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string, opsional): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen uniktype(string): Format gambar untuk screenshot. Default adalah png.filename(string, opsional): Nama file untuk menyimpan screenshot. Default kepage-{timestamp}.{png|jpeg}jika tidak ditentukan. Lebih suka nama file relatif untuk tetap berada dalam direktori output.fullPage(boolean, opsional): Ketika true, mengambil screenshot dari seluruh halaman yang dapat digulir, bukan hanya viewport yang saat ini terlihat. Tidak dapat digunakan dengan screenshot elemen.scale(string): Skala resolusi gambar. "css" menghasilkan screenshot berukuran dalam piksel CSS (lebih kecil, konsisten di seluruh perangkat). "device" menghasilkan screenshot resolusi tinggi menggunakan piksel perangkat (lebih besar, memperhitungkan rasio piksel perangkat). Default adalah css.
- Hanya-baca: true
- browser_type
- Judul: Ketik teks
- Deskripsi: Ketik teks ke elemen yang dapat diedit
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen uniktext(string): Teks yang akan diketik ke elemensubmit(boolean, opsional): Apakah akan mengirimkan teks yang dimasukkan (tekan Enter setelahnya)slowly(boolean, opsional): Apakah akan mengetik satu karakter pada satu waktu. Berguna untuk memicu penangan kunci di halaman. Secara default seluruh teks diisi sekaligus.
- Hanya-baca: false
- browser_wait_for
- Judul: Tunggu
- Deskripsi: Tunggu teks muncul atau menghilang atau waktu tertentu berlalu
- Parameter:
time(angka, opsional): Waktu tunggu dalam detiktext(string, opsional): Teks yang ditunggu kemunculannyatextGone(string, opsional): Teks yang ditunggu untuk menghilang
- Hanya-baca: false
Manajemen tab
- browser_tabs
- Judul: Kelola tab
- Deskripsi: Menampilkan, membuat, menutup, atau memilih tab peramban.
- Parameter:
action(string): Operasi yang akan dilakukanindex(angka, opsional): Indeks tab, digunakan untuk tutup/pilih. Jika dihilangkan untuk tutup, tab saat ini akan ditutup.url(string, opsional): URL untuk dinavigasi di tab baru, digunakan untuk baru.
- Hanya-baca: false
Instalasi peramban
Konfigurasi (ikut serta melalui --caps=config)
- browser_get_config
- Judul: Dapatkan konfigurasi
- Deskripsi: Dapatkan konfigurasi akhir yang telah diselesaikan setelah menggabungkan opsi CLI, variabel lingkungan, dan file konfigurasi.
- Parameter: Tidak ada
- Hanya-baca: true
Jaringan (ikut serta melalui --caps=network)
- browser_network_state_set
- Judul: Atur status jaringan
- Deskripsi: Mengatur status jaringan peramban menjadi online atau offline. Saat offline, semua permintaan jaringan akan gagal.
- Parameter:
state(string): Atur ke "offline" untuk mensimulasikan mode offline, "online" untuk memulihkan konektivitas jaringan
- Hanya-baca: false
- browser_route
- Judul: Mock permintaan jaringan
- Deskripsi: Siapkan rute untuk memock permintaan jaringan yang cocok dengan pola URL
- Parameter:
pattern(string): Pola URL yang akan dicocokkan (mis., "/api/users", "/*.{png,jpg}")status(angka, opsional): Kode status HTTP yang akan dikembalikan (default: 200)body(string, opsional): Badan respons (teks atau string JSON)contentType(string, opsional): Header Content-Type (mis., "application/json", "text/html")headers(array, opsional): Header yang akan ditambahkan dalam format "Nama: Nilai"removeHeaders(string, opsional): Daftar nama header yang dipisahkan koma untuk dihapus dari permintaan
- Hanya-baca: false
- browser_route_list
- Judul: Daftar rute jaringan
- Deskripsi: Menampilkan semua rute jaringan yang aktif
- Parameter: Tidak ada
- Hanya-baca: true
- browser_unroute
- Judul: Hapus rute jaringan
- Deskripsi: Menghapus rute jaringan yang cocok dengan pola (atau semua rute jika tidak ada pola yang ditentukan)
- Parameter:
pattern(string, opsional): Pola URL yang akan di-unroute (hilangkan untuk menghapus semua rute)
- Hanya-baca: false
Penyimpanan (ikut serta melalui --caps=storage)
- browser_cookie_clear
- Judul: Hapus cookie
- Deskripsi: Menghapus semua cookie
- Parameter: Tidak ada
- Hanya-baca: false
- browser_cookie_delete
- Judul: Hapus cookie
- Deskripsi: Menghapus cookie tertentu
- Parameter:
name(string): Nama cookie yang akan dihapus
- Hanya-baca: false
- browser_cookie_get
- Judul: Dapatkan cookie
- Deskripsi: Mendapatkan cookie tertentu berdasarkan nama
- Parameter:
name(string): Nama cookie yang akan didapatkan
- Hanya-baca: true
- browser_cookie_list
- Judul: Daftar cookie
- Deskripsi: Menampilkan semua cookie (opsional difilter berdasarkan domain/path)
- Parameter:
domain(string, opsional): Filter cookie berdasarkan domainpath(string, opsional): Filter cookie berdasarkan path
- Hanya-baca: true
- browser_cookie_set
- Judul: Atur cookie
- Deskripsi: Mengatur cookie dengan flag opsional (domain, path, expires, httpOnly, secure, sameSite)
- Parameter:
name(string): Nama cookievalue(string): Nilai cookiedomain(string, opsional): Domain cookiepath(string, opsional): Path cookieexpires(angka, opsional): Kedaluwarsa cookie sebagai Unix timestamphttpOnly(boolean, opsional): Apakah cookie hanya HTTPsecure(boolean, opsional): Apakah cookie amansameSite(string, opsional): Atribut SameSite cookie
- Hanya-baca: false
- browser_localstorage_clear
- Judul: Hapus localStorage
- Deskripsi: Menghapus semua localStorage
- Parameter: Tidak ada
- Hanya-baca: false
- browser_localstorage_delete
- Judul: Hapus item localStorage
- Deskripsi: Menghapus item localStorage
- Parameter:
key(string): Kunci yang akan dihapus
- Hanya-baca: false
- browser_localstorage_get
- Judul: Dapatkan item localStorage
- Deskripsi: Mendapatkan item localStorage berdasarkan kunci
- Parameter:
key(string): Kunci yang akan didapatkan
- Hanya-baca: true
- browser_localstorage_list
- Judul: Daftar localStorage
- Deskripsi: Menampilkan semua pasangan kunci-nilai localStorage
- Parameter: Tidak ada
- Hanya-baca: true
- browser_localstorage_set
- Judul: Atur item localStorage
- Deskripsi: Mengatur item localStorage
- Parameter:
key(string): Kunci yang akan diaturvalue(string): Nilai yang akan diatur
- Hanya-baca: false
- browser_sessionstorage_clear
- Judul: Hapus sessionStorage
- Deskripsi: Menghapus semua sessionStorage
- Parameter: Tidak ada
- Hanya-baca: false
- browser_sessionstorage_delete
- Judul: Hapus item sessionStorage
- Deskripsi: Menghapus item sessionStorage
- Parameter:
key(string): Kunci yang akan dihapus
- Hanya-baca: false
- browser_sessionstorage_get
- Judul: Dapatkan item sessionStorage
- Deskripsi: Mendapatkan item sessionStorage berdasarkan kunci
- Parameter:
key(string): Kunci yang akan didapatkan
- Hanya-baca: true
- browser_sessionstorage_list
- Judul: Daftar sessionStorage
- Deskripsi: Menampilkan semua pasangan kunci-nilai sessionStorage
- Parameter: Tidak ada
- Hanya-baca: true
- browser_sessionstorage_set
- Judul: Atur item sessionStorage
- Deskripsi: Mengatur item sessionStorage
- Parameter:
key(string): Kunci yang akan diaturvalue(string): Nilai yang akan diatur
- Hanya-baca: false
- browser_set_storage_state
- Judul: Pulihkan status penyimpanan
- Deskripsi: Memulihkan status penyimpanan (cookie, penyimpanan lokal) dari file. Ini akan menghapus cookie dan penyimpanan lokal yang ada sebelum memulihkan.
- Parameter:
filename(string): Path ke file status penyimpanan yang akan dipulihkan
- Hanya-baca: false
- browser_storage_state
- Judul: Simpan status penyimpanan
- Deskripsi: Menyimpan status penyimpanan (cookie, penyimpanan lokal) ke file untuk digunakan kembali nanti
- Parameter:
filename(string, opsional): Nama file untuk menyimpan status penyimpanan. Default kestorage-state-{timestamp}.jsonjika tidak ditentukan.
- Hanya-baca: true
DevTools (ikut serta melalui --caps=devtools)
- browser_annotate
- Judul: Anotasi halaman saat ini
- Deskripsi: Membuka Dasbor Playwright dalam mode anotasi untuk halaman saat ini dan menunggu pengguna menggambar anotasi. Mengembalikan tangkapan layar beranotasi, snapshot ARIA, dan daftar anotasi.
- Parameter: Tidak ada
- Hanya-baca: true
- browser_hide_highlight
- Judul: Sembunyikan sorotan elemen
- Deskripsi: Menghapus overlay sorotan yang sebelumnya ditambahkan untuk elemen.
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia yang digunakan saat menambahkan sorotan; harus cocok dengan nilai yang diberikan ke browser_highlight.target(string, opsional): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
- Hanya-baca: true
- browser_highlight
- Judul: Sorot elemen
- Deskripsi: Menampilkan overlay sorotan persisten di sekitar elemen pada halaman.
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia yang digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unikstyle(string, opsional): CSS inline tambahan yang diterapkan ke overlay sorotan, mis. "outline: 2px dashed red".
- Hanya-baca: true
- browser_resume
- Judul: Lanjutkan eksekusi skrip yang dijeda
- Deskripsi: Melanjutkan eksekusi skrip setelah dijeda. Saat dipanggil dengan step diatur ke true, eksekusi akan berhenti lagi sebelum tindakan berikutnya.
- Parameter:
step(boolean, opsional): Saat true, eksekusi akan berhenti lagi sebelum tindakan berikutnya, memungkinkan debugging langkah demi langkah.location(string, opsional): Jeda eksekusi pada : tertentu, mis. "example.spec.ts:42".
- Hanya-baca: false
- browser_start_tracing
- Judul: Mulai tracing
- Deskripsi: Mulai perekaman trace
- Parameter: Tidak ada
- Hanya-baca: true
- browser_start_video
- Judul: Mulai video
- Deskripsi: Mulai perekaman video
- Parameter:
filename(string, opsional): Nama file untuk menyimpan video.size(objek, opsional): Ukuran video
- Hanya-baca: true
- browser_stop_tracing
- Judul: Hentikan tracing
- Deskripsi: Hentikan perekaman trace
- Parameter: Tidak ada
- Hanya-baca: true
- browser_stop_video
- Judul: Hentikan video
- Deskripsi: Hentikan perekaman video
- Parameter: Tidak ada
- Hanya-baca: true
- browser_video_chapter
- Judul: Bab video
- Deskripsi: Menambahkan penanda bab ke rekaman video. Menampilkan kartu bab layar penuh dengan latar belakang buram.
- Parameter:
title(string): Judul babdescription(string, opsional): Deskripsi babduration(angka, opsional): Durasi dalam milidetik untuk menampilkan kartu bab
- Hanya-baca: true
- browser_video_hide_actions
- Judul: Sembunyikan overlay tindakan
- Deskripsi: Berhenti menganotasi tindakan yang dilakukan pada halaman.
- Parameter: Tidak ada
- Hanya-baca: true
- browser_video_show_actions
- Judul: Tampilkan overlay tindakan
- Deskripsi: Menganotasi tindakan selanjutnya yang dilakukan pada halaman dengan callout yang menamai tindakan dan menyorot elemen target. Berguna saat merekam video atau screencasting.
- Parameter:
duration(angka, opsional): Berapa lama setiap anotasi tindakan tetap di layar, dalam milidetik. Default ke 500.position(string, opsional): Di mana menempatkan judul tindakan relatif terhadap halaman. Default ke top-right.cursor(string, opsional): Dekorasi kursor untuk tindakan pointer. "pointer" (default) menganimasikan pointer mouse dari titik tindakan sebelumnya ke berikutnya; "none" menonaktifkan dekorasi kursor.
- Hanya-baca: true
Berbasis koordinat (diaktifkan melalui --caps=vision)
- browser_mouse_click_xy
- Judul: Klik
- Deskripsi: Klik tombol mouse pada posisi tertentu
- Parameter:
x(angka): Koordinat Xy(angka): Koordinat Ybutton(string, opsional): Tombol yang diklik, default kiriclickCount(angka, opsional): Jumlah klik, default 1delay(angka, opsional): Waktu tunggu antara mouse down dan mouse up dalam milidetik, default 0
- Hanya-baca: false
- browser_mouse_down
- Judul: Tekan mouse down
- Deskripsi: Tekan mouse down
- Parameter:
button(string, opsional): Tombol yang ditekan, default kiri
- Hanya-baca: false
- browser_mouse_drag_xy
- Judul: Seret mouse
- Deskripsi: Seret tombol kiri mouse ke posisi tertentu
- Parameter:
startX(angka): Koordinat X awalstartY(angka): Koordinat Y awalendX(angka): Koordinat X akhirendY(angka): Koordinat Y akhir
- Hanya-baca: false
- browser_mouse_move_xy
- Judul: Gerakkan mouse
- Deskripsi: Gerakkan mouse ke posisi tertentu
- Parameter:
x(angka): Koordinat Xy(angka): Koordinat Y
- Hanya-baca: false
- browser_mouse_up
- Judul: Tekan mouse up
- Deskripsi: Tekan mouse up
- Parameter:
button(string, opsional): Tombol yang ditekan, default kiri
- Hanya-baca: false
- browser_mouse_wheel
- Judul: Gulir roda mouse
- Deskripsi: Gulir roda mouse
- Parameter:
deltaX(angka): Delta XdeltaY(angka): Delta Y
- Hanya-baca: false
Pembuatan PDF (diaktifkan melalui --caps=pdf)
- browser_pdf_save
- Judul: Simpan sebagai PDF
- Deskripsi: Simpan halaman sebagai PDF
- Parameter:
filename(string, opsional): Nama file untuk menyimpan pdf. Default kepage-{timestamp}.pdfjika tidak ditentukan. Sebaiknya gunakan nama file relatif agar tetap berada dalam direktori output.
- Hanya-baca: true
Asersi pengujian (diaktifkan melalui --caps=testing)
- browser_generate_locator
- Judul: Buat locator untuk elemen
- Deskripsi: Hasilkan locator untuk elemen yang diberikan untuk digunakan dalam pengujian
- Parameter:
element(string, opsional): Deskripsi elemen yang dapat dibaca manusia, digunakan untuk mendapatkan izin berinteraksi dengan elementarget(string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
- Hanya-baca: true
- browser_verify_element_visible
- Judul: Verifikasi elemen terlihat
- Deskripsi: Verifikasi elemen terlihat di halaman
- Parameter:
role(string): ROLE dari elemen. Dapat ditemukan di snapshot seperti ini:- {ROLE} "Accessible Name":accessibleName(string): ACCESSIBLE_NAME dari elemen. Dapat ditemukan di snapshot seperti ini:- role "{ACCESSIBLE_NAME}"
- Hanya-baca: false
- browser_verify_list_visible
- Judul: Verifikasi daftar terlihat
- Deskripsi: Verifikasi daftar terlihat di halaman
- Parameter:
element(string): Deskripsi daftar yang dapat dibaca manusiatarget(string): Referensi elemen target yang tepat yang menunjuk ke daftaritems(array): Item yang akan diverifikasi
- Hanya-baca: false
- browser_verify_text_visible
- Judul: Verifikasi teks terlihat
- Deskripsi: Verifikasi teks terlihat di halaman. Utamakan browser_verify_element_visible jika memungkinkan.
- Parameter:
text(string): TEKS yang akan diverifikasi. Dapat ditemukan di snapshot seperti ini:- role "Accessible Name": {TEXT}atau seperti ini:- text: {TEXT}
- Hanya-baca: false
- browser_verify_value
- Judul: Verifikasi nilai
- Deskripsi: Verifikasi nilai elemen
- Parameter:
type(string): Tipe elemenelement(string): Deskripsi elemen yang dapat dibaca manusiatarget(string): Referensi elemen target yang tepat dari snapshot halamanvalue(string): Nilai yang akan diverifikasi. Untuk checkbox, gunakan "true" atau "false".
- Hanya-baca: false