{"id":5277,"date":"2026-05-11T09:55:33","date_gmt":"2026-05-11T04:25:33","guid":{"rendered":"https:\/\/itechgenie.com\/myblog\/?p=5277"},"modified":"2026-05-11T09:59:07","modified_gmt":"2026-05-11T04:29:07","slug":"itg-playwright-studio-the-ultimate-web-based-control-plane-for-playwright-tests","status":"publish","type":"post","link":"https:\/\/itechgenie.com\/myblog\/2026\/05\/itg-playwright-studio-the-ultimate-web-based-control-plane-for-playwright-tests\/","title":{"rendered":"ITG Playwright Studio &#8211; The ultimate web-based control plane for Playwright tests"},"content":{"rendered":"\n<div class=\"wp-block-jetpack-markdown\"><p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/logo.png\" alt=\"ITG Playwright Studio Logo\"><\/p>\n<h1>\ud83c\udfad ITG Playwright Studio<\/h1>\n<blockquote>\n<p><strong>The ultimate web-based control plane for Playwright tests.<\/strong><\/p>\n<\/blockquote>\n<p>Playwright Studio is a centralized testing platform designed to simplify the recording, management, and execution of automated user journeys. It provides a visual interface for managing test suites, triggering parallel runs, and analyzing rich execution reports\u2014all from a single, beautiful dashboard.<\/p>\n<hr>\n<h2>\u2728 Key Features<\/h2>\n<ul>\n<li><strong>\ud83d\ude80 Multi-File Test Execution<\/strong>: Select multiple test files and run them in a single batch with full parallelization.<\/li>\n<li><strong>\ud83d\udcc1 Integrated File Manager<\/strong>: Browse, edit, and manage your Playwright test repository directly in the browser using a Monaco-based editor.<\/li>\n<li><strong>\ud83d\udcca Detailed Execution History<\/strong>: Track every run with status, duration, and full command-line logs.<\/li>\n<li><strong>\ud83d\udcd1 Rich Reporting<\/strong>: Built-in support for <strong>Monocart<\/strong> and <strong>HTML<\/strong> reporters with direct viewing from the history tab.<\/li>\n<li><strong>\ud83d\udd04 Local Sync<\/strong>: Automatically discovers and synchronizes your existing Playwright project folders into the database.<\/li>\n<li><strong>\ud83d\udee1\ufe0f Secure Access<\/strong>: Token-based authentication and Role-Based Access Control (RBAC) foundation.<\/li>\n<li><strong>\ud83d\udcc5 Advanced Scheduling<\/strong>: Schedule tests to run automatically with cron-like precision.<\/li>\n<li><strong>\ud83e\udd16 CLI Agent<\/strong>: Run tests locally with Studio-managed configurations using the <code>itgps-agent<\/code> command-line tool.<\/li>\n<\/ul>\n<hr>\n<h2>\ud83d\udcf8 Visual Tour<\/h2>\n<h3>\ud83d\udd10 Multi-Provider Login<\/h3>\n<p>The entry point supporting OAuth and local administrative access.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/login.png\" alt=\"Login Page\"><\/p>\n<h3>\ud83d\udcc2 Project Workspace<\/h3>\n<p>A bird\u2019s-eye view of all your integrated Playwright projects.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/projects.png\" alt=\"Projects List\"><\/p>\n<h3>\ud83d\udd0d User Journey Explorer<\/h3>\n<p>The central hub for browsing and managing test specifications.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/explorer.png\" alt=\"Test Specs Explorer\"><\/p>\n<h3>\ud83e\uddea Runner &amp; Prepare<\/h3>\n<p>Interactive drawer for preparing and selecting tests for execution.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/prepare_tests.png\" alt=\"Runner Drawer\"><\/p>\n<h3>\u26a1 Live Execution Logs<\/h3>\n<p>Real-time feedback and execution logs for parallel test runs.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/test_execution.png\" alt=\"Live Execution\"><\/p>\n<h3>\ud83d\udcc5 Advanced Scheduler<\/h3>\n<p>Easily configure recurring test runs for continuous monitoring.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/scheduler.png\" alt=\"Schedule Dialog\"><\/p>\n<h3>\ud83d\udcca Historical Run Analytics<\/h3>\n<p>Complete history of every execution with direct access to HTML reports.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/executions.png\" alt=\"Execution History\"><\/p>\n<h3>\ud83d\udce6 Data Manager &#8211; Templates<\/h3>\n<p>Define schema-based data templates for your user journeys.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/data_templates.png\" alt=\"Data Templates\"><\/p>\n<h3>\ud83c\udf10 Environment &amp; Datasets<\/h3>\n<p>Manage environment-specific data overrides effortlessly.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/data_environments.png\" alt=\"Data Environments\"><\/p>\n<h3>\u2699\ufe0f Global Configuration<\/h3>\n<p>Fine-tune project-level Playwright settings from the UI.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/ITechGenie\/itg-playwright-studio\/main\/screenshots\/settings.png\" alt=\"Settings Configuration\"><\/p>\n<hr>\n<h2>\ud83d\udee0\ufe0f Tech Stack<\/h2>\n<ul>\n<li><strong>Frontend<\/strong>: React 18, Vite, Tailwind CSS, Lucide Icons, Radix UI (Shadcn), Monaco Editor.<\/li>\n<li><strong>Backend<\/strong>: Node.js, Express, TypeScript.<\/li>\n<li><strong>Database<\/strong>: SQLite (via <code>better-sqlite3<\/code>), Drizzle ORM.<\/li>\n<li><strong>Execution<\/strong>: Playwright (Core Engine).<\/li>\n<li><strong>Communication<\/strong>: WebSockets (Real-time logs) &amp; REST API.<\/li>\n<\/ul>\n<hr>\n<h2>\ud83d\ude80 Getting Started<\/h2>\n<h3>Quick Start with Docker<\/h3>\n<p>The fastest way to try ITG Playwright Studio is via Docker:<\/p>\n<pre><code class=\"language-bash\">docker pull ghcr.io\/itechgenie\/itg-playwright-studio:latest\n\ndocker run -d \\\n  -p 3000:3000 \\\n  -v $(pwd)\/data:\/app\/data \\\n  --name itg-playwright-studio \\\n  ghcr.io\/itechgenie\/itg-playwright-studio:latest\n<\/code><\/pre>\n<p>Then open <a href=\"http:\/\/localhost:3000\">http:\/\/localhost:3000<\/a> in your browser.<\/p>\n<blockquote>\n<p><strong>Note:<\/strong> The <code>-v $(pwd)\/data:\/app\/data<\/code> mount persists your projects, executions, and database across container restarts.<\/p>\n<\/blockquote>\n<hr>\n<h3>Prerequisites<\/h3>\n<ul>\n<li><strong>Node.js<\/strong>: v18 or later.<\/li>\n<li><strong>Playwright Dependencies<\/strong>: Ensure browsers are installed (<code>npx playwright install<\/code>).<\/li>\n<\/ul>\n<h3>Setup<\/h3>\n<ol>\n<li>\n<p><strong>Clone the repository<\/strong>:<\/p>\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/ITEchGenie\/playwright-studio.git\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Install Dependencies<\/strong>:<\/p>\n<pre><code class=\"language-bash\">npm install\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Configure Environment<\/strong>:\nCreate a <code>.env<\/code> file in <code>playwright-studio\/server<\/code>:<\/p>\n<pre><code class=\"language-env\">PORT=3000\nPROJECTS_BASE_PATH=D:\/tmp\/playwright-studio\/projects\nEXECUTIONS_BASE_PATH=D:\/tmp\/playwright-studio\/executions\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Configure OAuth (Optional)<\/strong>:\nTo enable Git integration and OAuth login, configure OAuth providers in your <code>.env<\/code> file:<\/p>\n<p><strong>GitLab OAuth<\/strong>:<\/p>\n<pre><code class=\"language-env\">GITLAB_CLIENT_ID=your_gitlab_client_id\nGITLAB_CLIENT_SECRET=your_gitlab_client_secret\nGITLAB_OAUTH_SCOPE=&quot;api read_user openid email profile read_repository write_repository&quot;\n<\/code><\/pre>\n<p><strong>GitHub OAuth<\/strong>:<\/p>\n<pre><code class=\"language-env\">GITHUB_CLIENT_ID=your_github_client_id\nGITHUB_CLIENT_SECRET=your_github_client_secret\nGITHUB_OAUTH_SCOPE=&quot;read:user user:email repo&quot;\n<\/code><\/pre>\n<p><strong>Required OAuth Scopes<\/strong>:<\/p>\n<ul>\n<li><strong>GitLab<\/strong>: <code>read_user openid email profile read_repository write_repository<\/code>\n<ul>\n<li><code>api<\/code>, <code>read_repository<\/code> and <code>write_repository<\/code> are required for Git operations (import projects, sync files, push changes)<\/li>\n<\/ul>\n<\/li>\n<li><strong>GitHub<\/strong>: <code>read:user user:email repo<\/code>\n<ul>\n<li><code>repo<\/code> scope is required for full repository access (read and write operations)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Setting up OAuth Apps<\/strong>:<\/p>\n<ul>\n<li><strong>GitLab<\/strong>: Create an OAuth application at <code>https:\/\/gitlab.com\/-\/profile\/applications<\/code>\n<ul>\n<li>Set redirect URI to: <code>http:\/\/localhost:5173\/apis\/auth\/callback\/gitlab<\/code> (adjust for production)<\/li>\n<li>Select the required scopes listed above<\/li>\n<\/ul>\n<\/li>\n<li><strong>GitHub<\/strong>: Create an OAuth app at <code>https:\/\/github.com\/settings\/developers<\/code>\n<ul>\n<li>Set authorization callback URL to: <code>http:\/\/localhost:5173\/apis\/auth\/callback\/github<\/code> (adjust for production)<\/li>\n<li>Request the required scopes listed above<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Initialize Database<\/strong>:\nThe server automatically applies migrations on startup, but you can manually sync the schema:<\/p>\n<pre><code class=\"language-bash\">cd playwright-studio\/server\nnpm run db:push\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Start Development<\/strong>:\nFrom the root:<\/p>\n<pre><code class=\"language-bash\">npm run dev\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<hr>\n<h2>\ud83d\udcc1 Project Structure<\/h2>\n<pre><code class=\"language-text\">\u251c\u2500\u2500 playwright-studio\/\n\u2502   \u251c\u2500\u2500 client\/           # React + Vite Frontend\n\u2502   \u2514\u2500\u2500 server\/           # Express + Drizzle Backend\n\u251c\u2500\u2500 itgps-agent\/          # CLI Agent for local test execution\n\u251c\u2500\u2500 playwright-studio-extension\/ # Chrome Recorder Extension\n\u2514\u2500\u2500 tests\/                # Core test suite\n<\/code><\/pre>\n<hr>\n<h2>\ud83e\udd16 ITG Playwright Studio Agent (itgps-agent)<\/h2>\n<p>The <strong>itgps-agent<\/strong> is a command-line tool that bridges ITG Playwright Studio data into local Playwright workflows. It enables developers to run tests locally while leveraging Studio-managed configurations, environments, and datasets.<\/p>\n<h3>Features<\/h3>\n<ul>\n<li>\ud83d\udd10 <strong>Secure Authentication<\/strong> \u2014 Connect to Studio using Personal Access Tokens (PAT)<\/li>\n<li>\ud83c\udfaf <strong>Project Management<\/strong> \u2014 Select and configure projects, environments, and datasets<\/li>\n<li>\ud83d\ude80 <strong>Remote Test Execution<\/strong> \u2014 Trigger Studio-side test runs and stream results in real-time<\/li>\n<li>\ud83d\udd04 <strong>Git Synchronization<\/strong> \u2014 Instruct Studio to pull latest changes from Git repositories<\/li>\n<li>\ud83c\udfad <strong>Playwright Integration<\/strong> \u2014 Bootstrap Studio data and run any Playwright command locally<\/li>\n<li>\ud83d\udcbe <strong>Offline Support<\/strong> \u2014 Cache Studio data for offline test execution<\/li>\n<li>\u26a1 <strong>Zero Configuration<\/strong> \u2014 Interactive setup wizard guides you through configuration<\/li>\n<\/ul>\n<h3>Installation<\/h3>\n<p><strong>Global Installation (Recommended):<\/strong><\/p>\n<pre><code class=\"language-bash\">npm install -g @itechgenie\/itgps-agent\n<\/code><\/pre>\n<p><strong>Local Installation:<\/strong><\/p>\n<pre><code class=\"language-bash\">npm install --save-dev @itechgenie\/itgps-agent\n<\/code><\/pre>\n<h3>Quick Start<\/h3>\n<ol>\n<li>\n<p><strong>Configure the Agent:<\/strong><\/p>\n<pre><code class=\"language-bash\">itgps-agent config\n<\/code><\/pre>\n<p>This interactive wizard will:<\/p>\n<ul>\n<li>Prompt for your Studio URL<\/li>\n<li>Request your Personal Access Token (PAT)<\/li>\n<li>Let you select a project, environment, and dataset<\/li>\n<li>Copy Playwright config to <code>.itgps\/<\/code> folder<\/li>\n<li>Bootstrap and cache Studio data<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Install Playwright Browsers:<\/strong><\/p>\n<pre><code class=\"language-bash\">npx playwright install\n<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>Run Tests Locally:<\/strong><\/p>\n<pre><code class=\"language-bash\">itgps-agent test\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Available Commands<\/h3>\n<h4>Agent Commands<\/h4>\n<ul>\n<li><strong><code>config<\/code><\/strong> \u2014 Interactive setup wizard for authentication and project configuration<\/li>\n<li><strong><code>remote-run<\/code><\/strong> \u2014 Trigger a test run on the Studio server and stream output in real-time<\/li>\n<li><strong><code>studio-git-sync<\/code><\/strong> \u2014 Instruct Studio to pull the latest changes from Git<\/li>\n<\/ul>\n<h4>Playwright Commands<\/h4>\n<p>All native Playwright commands are supported. The agent bootstraps Studio data before execution:<\/p>\n<pre><code class=\"language-bash\">itgps-agent test                    # Run tests with Studio config\nitgps-agent test --headed           # Run in headed mode\nitgps-agent test --grep &quot;login&quot;     # Run specific tests\nitgps-agent show-report             # View test reports\nitgps-agent codegen                 # Generate test code\n<\/code><\/pre>\n<h3>How It Works<\/h3>\n<ol>\n<li>\n<p><strong>Bootstrap Process:<\/strong><\/p>\n<ul>\n<li>Reads Studio URL and token from global config or local <code>.env<\/code><\/li>\n<li>Fetches project config, environment variables, and dataset variables from Studio API<\/li>\n<li>Falls back to cached data if Studio is unreachable<\/li>\n<li>Merges variables with local <code>.env<\/code> overrides<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Variable Precedence<\/strong> (highest to lowest):<\/p>\n<ul>\n<li>Local <code>.env<\/code> overrides<\/li>\n<li>Dataset variables<\/li>\n<li>Environment variables<\/li>\n<li>Project defaults<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Configuration:<\/strong><\/p>\n<ul>\n<li>Copies Playwright config to <code>.itgps\/playwright.config.cjs<\/code><\/li>\n<li>Users can customize this config as needed<\/li>\n<li><code>.itgps\/<\/code> folder is automatically added to <code>.gitignore<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Example Workflow<\/h3>\n<pre><code class=\"language-bash\"># Initial setup\ncd my-test-project\nnpm install -D @playwright\/test\nnpm install -g @itechgenie\/itgps-agent\n\n# Configure connection to Studio\nitgps-agent config\n# \u2713 Connected to Studio\n# \u2713 Selected project: &quot;E-Commerce Tests&quot;\n# \u2713 Selected environment: &quot;Staging&quot;\n# \u2713 Selected dataset: &quot;Test Users&quot;\n# \u2713 Playwright config copied to .itgps\/playwright.config.cjs\n# \u2713 Added .itgps\/ to .gitignore\n\n# Install browsers\nnpx playwright install chromium\n\n# Run tests locally with Studio data\nitgps-agent test\n\n# Trigger remote run on Studio\nitgps-agent remote-run\n\n# Sync Studio with latest Git changes\nitgps-agent studio-git-sync\n<\/code><\/pre>\n<h3>Configuration Files<\/h3>\n<p><strong>Global Config<\/strong> (<code>~\/.itgps\/config.json<\/code>):<\/p>\n<pre><code class=\"language-json\">{\n  &quot;studioUrl&quot;: &quot;https:\/\/studio.example.com&quot;,\n  &quot;token&quot;: &quot;your-personal-access-token&quot;\n}\n<\/code><\/pre>\n<p><strong>Local Environment<\/strong> (<code>.env<\/code>):<\/p>\n<pre><code class=\"language-env\">ITGPS_STUDIO_URL=https:\/\/studio.example.com\nITGPS_TOKEN=your-personal-access-token\nITGPS_PROJECT_ID=project-uuid\nITGPS_ENV_ID=environment-uuid\nITGPS_DATASET_ID=dataset-uuid\n<\/code><\/pre>\n<p><strong>Playwright Config<\/strong> (<code>.itgps\/playwright.config.cjs<\/code>):<\/p>\n<ul>\n<li>Auto-generated during <code>itgps-agent config<\/code><\/li>\n<li>Fully customizable by users<\/li>\n<li>Uses environment variables from Studio<\/li>\n<li>Git-ignored by default<\/li>\n<\/ul>\n<h3>Language Support<\/h3>\n<p>The agent works with both <strong>JavaScript<\/strong> and <strong>TypeScript<\/strong> projects:<\/p>\n<p><strong>JavaScript Example:<\/strong><\/p>\n<pre><code class=\"language-javascript\">\/\/ tests\/login.spec.js\nconst { test, expect } = require('@playwright\/test');\n\ntest('login test', async ({ page }) =&gt; {\n  const username = process.env.app_username || 'default_user';\n  const password = process.env.app_password || 'default_pass';\n  \n  await page.goto(process.env.siteurl);\n  await page.fill('#username', username);\n  await page.fill('#password', password);\n  await page.click('#login');\n  \n  await expect(page).toHaveURL(\/dashboard\/);\n});\n<\/code><\/pre>\n<p><strong>TypeScript Example:<\/strong><\/p>\n<pre><code class=\"language-typescript\">\/\/ tests\/login.spec.ts\nimport { test, expect } from '@playwright\/test';\n\ntest('login test', async ({ page }) =&gt; {\n  const username = process.env.app_username || 'default_user';\n  const password = process.env.app_password || 'default_pass';\n  \n  await page.goto(process.env.siteurl!);\n  await page.fill('#username', username);\n  await page.fill('#password', password);\n  await page.click('#login');\n  \n  await expect(page).toHaveURL(\/dashboard\/);\n});\n<\/code><\/pre>\n<h3>Troubleshooting<\/h3>\n<p><strong>Authentication Errors:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Regenerate token in Studio Settings and reconfigure\nitgps-agent config\n<\/code><\/pre>\n<p><strong>Network Errors:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Agent automatically uses cached data when offline\n# Refresh cache when connection is restored\nitgps-agent config\n<\/code><\/pre>\n<p><strong>Missing Browsers:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Install Playwright browsers\nnpx playwright install\n<\/code><\/pre>\n<p>For more details, see the <a href=\"itgps-agent\/README.md\">itgps-agent README<\/a>.<\/p>\n<hr>\n<h2>\ud83d\udd17 Git Integration<\/h2>\n<p>ITG Playwright Studio supports importing projects directly from GitLab or GitHub repositories, syncing files on demand, and pushing edits back with a commit message \u2014 all without needing a local <code>git<\/code> binary.<\/p>\n<h3>Tested Providers<\/h3>\n<table>\n<thead>\n<tr>\n<th>Provider<\/th>\n<th>Status<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>GitLab<\/td>\n<td>\u2705 Tested<\/td>\n<\/tr>\n<tr>\n<td>GitHub<\/td>\n<td>\ud83e\uddea Implemented, community testing welcome<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote>\n<p><strong>Note:<\/strong> Git integration has been primarily tested with <strong>GitLab<\/strong>. If you run into issues with GitHub or any other edge cases, please <a href=\"https:\/\/github.com\/ITechGenie\/playwright-studio\/issues\/new\">open a ticket here<\/a> with steps to reproduce.<\/p>\n<\/blockquote>\n<h3>Required OAuth Scopes<\/h3>\n<p><strong>GitLab<\/strong> \u2014 your OAuth app must have these scopes:<\/p>\n<pre><code>api read_api read_user openid email profile read_repository write_repository\n<\/code><\/pre>\n<p><strong>GitHub<\/strong> \u2014 your OAuth app must have:<\/p>\n<pre><code>read:user user:email repo\n<\/code><\/pre>\n<h3>Setup<\/h3>\n<p>Add these to your <code>playwright-studio\/server\/.env<\/code>:<\/p>\n<pre><code class=\"language-env\"># GitLab\nGITLAB_CLIENT_ID=your_client_id\nGITLAB_CLIENT_SECRET=your_client_secret\n\n# GitHub\nGITHUB_CLIENT_ID=your_client_id\nGITHUB_CLIENT_SECRET=your_client_secret\n<\/code><\/pre>\n<p>Create your OAuth apps:<\/p>\n<ul>\n<li><strong>GitLab<\/strong>: <code>https:\/\/gitlab.com\/-\/profile\/applications<\/code> \u2014 set redirect URI to <code>http:\/\/localhost:5173\/apis\/auth\/callback\/gitlab<\/code><\/li>\n<li><strong>GitHub<\/strong>: <code>https:\/\/github.com\/settings\/developers<\/code> \u2014 set callback URL to <code>http:\/\/localhost:5173\/apis\/auth\/callback\/github<\/code><\/li>\n<\/ul>\n<blockquote>\n<p>If you re-configure scopes on an existing OAuth app, you must <strong>log out and log back in<\/strong> to get a new token with the updated scopes.<\/p>\n<\/blockquote>\n<hr>\n<h2>\ud83d\udc1b Reporting Issues<\/h2>\n<p>Found a bug or something not working as expected? Please <a href=\"https:\/\/github.com\/ITechGenie\/playwright-studio\/issues\/new\">open an issue<\/a> and include:<\/p>\n<ul>\n<li>Steps to reproduce<\/li>\n<li>Expected vs actual behaviour<\/li>\n<li>Browser and OS<\/li>\n<li>Any relevant server\/console logs<\/li>\n<\/ul>\n<hr>\n<h2>\ud83d\udcdc License<\/h2>\n<p>This project is licensed under the MIT License. See <a href=\"https:\/\/github.com\/ITechGenie\/itg-playwright-studio\/blob\/main\/LICENSE\">LICENSE<\/a> for details.<\/p>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7,123,12],"tags":[33,82,83,53],"class_list":["post-5277","post","type-post","status-publish","format-standard","hentry","category-open-source","category-playwright","category-utility","tag-guide","tag-open-source","tag-softwares","tag-tips-tricks"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2HHtz-1n7","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/posts\/5277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/comments?post=5277"}],"version-history":[{"count":3,"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/posts\/5277\/revisions"}],"predecessor-version":[{"id":5280,"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/posts\/5277\/revisions\/5280"}],"wp:attachment":[{"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/media?parent=5277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/categories?post=5277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itechgenie.com\/myblog\/wp-json\/wp\/v2\/tags?post=5277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}