[Bug]: frame with `visibility: hidden` is incorrectly treated as visible
Author: DetachHeadCreated Sep 15, 2026Updated Sep 16, 2026
Labelsneeds-triage-win
### Version
1.63.0
### Steps to reproduce
```ts
import { expect, test } from "@playwright/test";
// fails
test("visibility: hidden", async ({ page }) => {
await page.setContent(`
`);
await expect(page.frameLocator("[name='asdf']").locator("p")).toBeHidden();
});
// passes
test("display: none", async ({ page }) => {
await page.setContent(`
`);
await expect(page.frameLocator("[name='asdf']").locator("p")).toBeHidden();
});
```
### Expected behavior
the locator is considered hidden in both tests
### Actual behavior
the locator is considered visible in the `visibility: hidden` test even though it's not actually visible
### Additional context
_No response_
### Environment
```shell
System:
OS: Windows 11 10.0.22631
CPU: (12) x64 11th Gen Intel(R) Core(TM) i5-11500H @ 2.90GHz
Memory: 6.48 GB / 31.20 GB
Binaries:
Node: 26.3.1 - C:\Users\\\user\AppData\Roaming\node\node.EXE
npm: 11.16.0 - C:\Users\\\user\AppData\Roaming\node\npm.CMD
IDEs:
VSCode: 1.134.0 - C:\Users\\\user\AppData\Local\Programs\Microsoft VS Code\bin\code.CMD
Languages:
Bash: 5.2.21 - C:\WINDOWS\system32\bash.EXE
npmPackages:
@playwright/test: 1.63.0 => 1.63.0
playwright: 1.63.0 => 1.63.0
```
Source: microsoft/playwright