Skip to content

Comments

Fix Playwright browser download failures in Copilot engine firewall#16775

Merged
pelikhan merged 6 commits intomainfrom
copilot/fix-playwright-configuration
Feb 19, 2026
Merged

Fix Playwright browser download failures in Copilot engine firewall#16775
pelikhan merged 6 commits intomainfrom
copilot/fix-playwright-configuration

Conversation

Copy link
Contributor

Copilot AI commented Feb 19, 2026

  • Create initial plan for Playwright domain support
  • Add extractPlaywrightDomains function to detect and include Playwright domains
  • Add test coverage for Playwright domain extraction
  • Recompile workflows with Playwright domain support
  • Create PlaywrightDomains constant following same pattern as engine domain sets
  • Merge main branch and resolve conflicts
  • Recompile workflows with both Playwright domains and updated firewall version (v0.20.1)
Original prompt

Reference: https://github.com/github/gh-aw/actions/runs/22166235479/job/64093999132#step:29:1

Fix playwright configure or firewall to make it accessible


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
@pelikhan
Copy link
Contributor

@copilot create new domain set playwright with those domains and make sure this set is added when playwright is used.

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix Playwright configuration or firewall accessibility Fix Playwright browser download failures in Copilot engine firewall Feb 19, 2026
@pelikhan
Copy link
Contributor

@copilot Recompile

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 19, 2026

@copilot create new domain set playwright with those domains and make sure this set is added when playwright is used.

Created PlaywrightDomains constant with the required domains and updated the implementation to use it. The constant is now automatically added when Playwright is configured, following the same pattern as CopilotDefaultDomains, CodexDefaultDomains, and ClaudeDefaultDomains. Commit: 6f92643

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw util (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw fflib (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha w/js/**/*.json&#39; --ignore-path ../../../.prettierignore (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v5 --jq .object.sha h ../../../.prettierignore tion (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v5 --jq .object.sha h ../../../.prettierignore tion 64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha ignore-path ../../../.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha w/js/**/*.json&#39; --ignore-path ../../../.prettierignore (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha ignore-path ../../../.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha json&#39; --ignore-path ../../../.pr--ignore-path .cfg ode_modules/.bin/sh (http block)
  • https://api.github.com/repos/anchore/sbom-action/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/metadata-action/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/setup-buildx-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha ./cmd/gh-aw .cfg 64/pkg/tool/linux_amd64/vet ame (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/a70c5eada06553e3510ac27f2c3bda9d3705bccb
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/a70c5eada06553e3510ac27f2c3bda9d3705bccb --jq .object.sha (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha h ../../../.prettierignore (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copy link
Contributor Author

Copilot AI commented Feb 19, 2026

@copilot Recompile

Recompiled all 152 workflows successfully. No changes were produced because the workflows were already compiled with the correct Playwright domains in the previous commit (7a6cc12).

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha playwright user-docs-review.md /usr/local/sbin/grep playwright pdate-release.md-l /opt/pipx_bin/grplaywright grep -l playwright malizer.md rep playwright ous-code-scan.md-l rgo/bin/grep grep (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha playwright user-docs-review.md ep playwright ark-pull-request-l ache/go/1.25.0/xplaywright grep -l playwright malizer.md /opt/pipx_bin/grep playwright ous-code-scan.md-l 0/x64/bin/grep grep (http block)
  • https://api.github.com/repos/anchore/sbom-action/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha /gh-aw (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/metadata-action/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/setup-buildx-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/a70c5eada06553e3510ac27f2c3bda9d3705bccb
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/a70c5eada06553e3510ac27f2c3bda9d3705bccb --jq .object.sha (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan pelikhan marked this pull request as ready for review February 19, 2026 08:05
Copilot AI review requested due to automatic review settings February 19, 2026 08:05
@pelikhan
Copy link
Contributor

@copilot merge main and recompile

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request fixes Playwright browser download failures in Copilot and Codex engine workflows by adding support for Playwright-specific download domains. The firewall was blocking access to cdn.playwright.dev and playwright.download.prss.microsoft.com, which prevented the Playwright MCP server from initializing. These domains were already present in ClaudeDefaultDomains but missing from Copilot and Codex configurations.

Changes:

  • Added PlaywrightDomains constant with the two required domains
  • Implemented extractPlaywrightDomains function to detect Playwright tool configuration
  • Integrated Playwright domain extraction into the domain merging pipeline
  • Added comprehensive test coverage for the new functionality
  • Updated generated workflow lock files with the Playwright domains in alphabetical order

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
pkg/workflow/domains.go Added PlaywrightDomains constant and extractPlaywrightDomains function; integrated into mergeDomainsWithNetworkToolsAndRuntimes
pkg/workflow/http_mcp_domains_test.go Added test suite for Playwright domain extraction and engine integration (contains critical bug in expected values)
.github/workflows/slide-deck-maintainer.lock.yml Updated firewall domain list to include Playwright domains in alphabetical order
.github/workflows/docs-noob-tester.lock.yml Updated firewall domain list to include Playwright domains in alphabetical order
Comments suppressed due to low confidence (2)

pkg/workflow/http_mcp_domains_test.go:257

  • The expected domain order in this test is incorrect. When sorted alphabetically, "cdn.playwright.dev" should come before "playwright.download.prss.microsoft.com" since 'c' comes before 'p'. The expected slice should be: []string{"cdn.playwright.dev", "playwright.download.prss.microsoft.com"}
			expected: []string{"playwright.download.prss.microsoft.com", "cdn.playwright.dev"},

pkg/workflow/http_mcp_domains_test.go:264

  • The expected domain order in this test is incorrect. When sorted alphabetically, "cdn.playwright.dev" should come before "playwright.download.prss.microsoft.com" since 'c' comes before 'p'. The expected slice should be: []string{"cdn.playwright.dev", "playwright.download.prss.microsoft.com"}
			expected: []string{"playwright.download.prss.microsoft.com", "cdn.playwright.dev"},

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +250 to +264
expected: []string{"playwright.download.prss.microsoft.com", "cdn.playwright.dev"},
},
{
name: "playwright tool with empty config",
tools: map[string]any{
"playwright": map[string]any{},
},
expected: []string{"playwright.download.prss.microsoft.com", "cdn.playwright.dev"},
},
{
name: "playwright tool with null config",
tools: map[string]any{
"playwright": nil,
},
expected: []string{"playwright.download.prss.microsoft.com", "cdn.playwright.dev"},
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The expected domain order in this test is incorrect. When sorted alphabetically, "cdn.playwright.dev" should come before "playwright.download.prss.microsoft.com" since 'c' comes before 'p'. The expected slice should be: []string{"cdn.playwright.dev", "playwright.download.prss.microsoft.com"}

This issue also appears in the following locations of the same file:

  • line 257
  • line 264
Suggested change
expected: []string{"playwright.download.prss.microsoft.com", "cdn.playwright.dev"},
},
{
name: "playwright tool with empty config",
tools: map[string]any{
"playwright": map[string]any{},
},
expected: []string{"playwright.download.prss.microsoft.com", "cdn.playwright.dev"},
},
{
name: "playwright tool with null config",
tools: map[string]any{
"playwright": nil,
},
expected: []string{"playwright.download.prss.microsoft.com", "cdn.playwright.dev"},
expected: []string{"cdn.playwright.dev", "playwright.download.prss.microsoft.com"},
},
{
name: "playwright tool with empty config",
tools: map[string]any{
"playwright": map[string]any{},
},
expected: []string{"cdn.playwright.dev", "playwright.download.prss.microsoft.com"},
},
{
name: "playwright tool with null config",
tools: map[string]any{
"playwright": nil,
},
expected: []string{"cdn.playwright.dev", "playwright.download.prss.microsoft.com"},

Copilot uses AI. Check for mistakes.
Copilot AI and others added 2 commits February 19, 2026 08:11
…t-configuration

# Conflicts:
#	.github/workflows/docs-noob-tester.lock.yml
#	.github/workflows/slide-deck-maintainer.lock.yml
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 19, 2026

@copilot merge main and recompile

Merged main and recompiled all 152 workflows. The merge conflicts in lock files were resolved, and the recompiled workflows now include both the Playwright domains (cdn.playwright.dev, playwright.download.prss.microsoft.com) and the updated firewall version (v0.20.1) from main. Commits: 158db79 (merge), 30dc12d (fix conflicts)

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw dtesjrk/1rj0bW9I-C (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha -c=4 -nolocalimports -importcfg /tmp/go-build1453832592/b062/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/cli/access_log.go /home/REDACTED/work/gh-aw/gh-aw/pkg/cli/actionlint.go (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/anchore/sbom-action/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha ./cmd/gh-aw (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/metadata-action/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v5 --jq .object.sha (http block)
  • https://api.github.com/repos/docker/setup-buildx-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/a70c5eada06553e3510ac27f2c3bda9d3705bccb
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/a70c5eada06553e3510ac27f2c3bda9d3705bccb --jq .object.sha (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@github-actions
Copy link
Contributor

Hey @Copilot 👋 — thanks for working on the Playwright firewall domain support! This is a valuable improvement to ensure browser downloads work properly.

This PR violates the core contribution workflow for this repository:

According to CONTRIBUTING.md, this project explicitly prohibits traditional pull requests. The contribution process requires:

  1. First, create an issue with a detailed agentic plan — describing the problem, analysis, and implementation steps
  2. Maintainer reviews and approves the plan
  3. Maintainer assigns the issue to GitHub Copilot Agent — only then does the agent create a PR
  4. Agent implements the approved plan from the issue

This PR was created directly without an approved issue/plan, which bypasses the required agentic workflow. From CONTRIBUTING.md:

🚫 Traditional Pull Requests Are Not Enabled: You cannot create pull requests directly. Instead, you create detailed agentic plans in issues, and GitHub Copilot Agent will create and implement the PR for you after maintainer approval.

While the technical implementation looks solid (adds Playwright domains, includes tests, focused changes), the process violation is a blocker.

Next steps:

  1. Close this PR
  2. Create an issue with the agentic plan for Playwright domain support
  3. Wait for maintainer approval and assignment to the agent
  4. The agent will then create a proper PR following the approved plan

Generated by Contribution Check

@pelikhan pelikhan merged commit 35ff7fd into main Feb 19, 2026
@pelikhan pelikhan deleted the copilot/fix-playwright-configuration branch February 19, 2026 12:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants