Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(webkit): roll to r2083 #32813

Merged
merged 2 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/actions/enable-microphone-access/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ runs:
elif [[ "$version" == "12" || "$version" == "13" ]]; then
sqlite3 $HOME/Library/Application\ Support/com.apple.TCC/TCC.db "INSERT OR REPLACE INTO access VALUES('kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159);"
else
echo "macOS version is unsupported. Version is $version, exiting"
exit 1
echo "Skipping unsupported macOS version $version"
exit 0
fi
echo "Successfully allowed microphone access"
9 changes: 7 additions & 2 deletions .github/workflows/tests_secondary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,15 @@ jobs:
strategy:
fail-fast: false
matrix:
# Intel: macos-13, macos-14-large
# Arm64: macos-13-xlarge, macos-14
# Intel: macos-13, macos-14-large, macos-15-large
# Arm64: macos-13-xlarge, macos-14 macos-15
os: [macos-13, macos-13-xlarge, macos-14-large, macos-14]
browser: [chromium, firefox, webkit]
include:
- os: macos-15-large
browser: webkit
- os: macos-15
browser: webkit
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion packages/playwright-core/browsers.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
},
{
"name": "webkit",
"revision": "2082",
"revision": "2083",
"installByDefault": true,
"revisionOverrides": {
"mac10.14": "1446",
Expand Down
14 changes: 14 additions & 0 deletions packages/playwright-core/src/server/registry/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
'mac13-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
'mac14': 'builds/chromium/%s/chromium-mac.zip',
'mac14-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
'mac15': 'builds/chromium/%s/chromium-mac.zip',
'mac15-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
'win64': 'builds/chromium/%s/chromium-win64.zip',
},
'chromium-tip-of-tree': {
Expand Down Expand Up @@ -127,6 +129,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
'mac13-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
'mac14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
'mac14-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
'mac15': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
'mac15-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
'win64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-win64.zip',
},
'firefox': {
Expand Down Expand Up @@ -154,6 +158,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
'mac13-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
'mac14': 'builds/firefox/%s/firefox-mac.zip',
'mac14-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
'mac15': 'builds/firefox/%s/firefox-mac.zip',
'mac15-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
'win64': 'builds/firefox/%s/firefox-win64.zip',
},
'firefox-beta': {
Expand Down Expand Up @@ -181,6 +187,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
'mac13-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
'mac14': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
'mac14-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
'mac15': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
'mac15-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
'win64': 'builds/firefox-beta/%s/firefox-beta-win64.zip',
},
'webkit': {
Expand Down Expand Up @@ -208,6 +216,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
'mac13-arm64': 'builds/webkit/%s/webkit-mac-13-arm64.zip',
'mac14': 'builds/webkit/%s/webkit-mac-14.zip',
'mac14-arm64': 'builds/webkit/%s/webkit-mac-14-arm64.zip',
'mac15': 'builds/webkit/%s/webkit-mac-15.zip',
'mac15-arm64': 'builds/webkit/%s/webkit-mac-15-arm64.zip',
'win64': 'builds/webkit/%s/webkit-win64.zip',
},
'ffmpeg': {
Expand Down Expand Up @@ -235,6 +245,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
'mac13-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
'mac14': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
'mac14-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
'mac15': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
'mac15-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
'win64': 'builds/ffmpeg/%s/ffmpeg-win64.zip',
},
'android': {
Expand Down Expand Up @@ -262,6 +274,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
'mac13-arm64': 'builds/android/%s/android.zip',
'mac14': 'builds/android/%s/android.zip',
'mac14-arm64': 'builds/android/%s/android.zip',
'mac15': 'builds/android/%s/android.zip',
'mac15-arm64': 'builds/android/%s/android.zip',
'win64': 'builds/android/%s/android.zip',
},
// TODO(bidi): implement downloads.
Expand Down
5 changes: 3 additions & 2 deletions packages/playwright-core/src/utils/hostPlatform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export type HostPlatform = 'win64' |
'mac12' | 'mac12-arm64' |
'mac13' | 'mac13-arm64' |
'mac14' | 'mac14-arm64' |
'mac15' | 'mac15-arm64' |
'ubuntu18.04-x64' | 'ubuntu18.04-arm64' |
'ubuntu20.04-x64' | 'ubuntu20.04-arm64' |
'ubuntu22.04-x64' | 'ubuntu22.04-arm64' |
Expand All @@ -47,9 +48,9 @@ function calculatePlatform(): { hostPlatform: HostPlatform, isOfficiallySupporte
macVersion = 'mac10.15';
} else {
// ver[0] >= 20
const LAST_STABLE_MAC_MAJOR_VERSION = 14;
const LAST_STABLE_MACOS_MAJOR_VERSION = 15;
// Best-effort support for MacOS beta versions.
macVersion = 'mac' + Math.min(ver[0] - 9, LAST_STABLE_MAC_MAJOR_VERSION);
macVersion = 'mac' + Math.min(ver[0] - 9, LAST_STABLE_MACOS_MAJOR_VERSION);
// BigSur is the first version that might run on Apple Silicon.
if (os.cpus().some(cpu => cpu.model.includes('Apple')))
macVersion += '-arm64';
Expand Down
8 changes: 8 additions & 0 deletions tests/config/browserTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import type { TestInfo } from '@playwright/test';
export type BrowserTestWorkerFixtures = PageWorkerFixtures & {
browserVersion: string;
defaultSameSiteCookieValue: string;
sameSiteStoredValueForNone: string;
allowsThirdParty: boolean;
browserMajorVersion: number;
browserType: BrowserType;
Expand Down Expand Up @@ -86,6 +87,13 @@ const test = baseTest.extend<BrowserTestTestFixtures, BrowserTestWorkerFixtures>
throw new Error('unknown browser - ' + browserName);
}, { scope: 'worker' }],

sameSiteStoredValueForNone: [async ({ browserName, isMac }, run) => {
if (browserName === 'webkit' && isMac && parseInt(os.release(), 10) >= 24)
await run('Lax');
else
await run('None');
}, { scope: 'worker' }],

browserMajorVersion: [async ({ browserVersion }, run) => {
await run(Number(browserVersion.split('.')[0]));
}, { scope: 'worker' }],
Expand Down
8 changes: 4 additions & 4 deletions tests/library/browsercontext-cookies.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ it('should get multiple cookies', async ({ context, page, server, defaultSameSit
]));
});

it('should get cookies from multiple urls', async ({ context, browserName, isWindows }) => {
it('should get cookies from multiple urls', async ({ context, browserName, isWindows, sameSiteStoredValueForNone }) => {
await context.addCookies([{
url: 'https://foo.com',
name: 'doggo',
Expand Down Expand Up @@ -178,7 +178,7 @@ it('should get cookies from multiple urls', async ({ context, browserName, isWin
expires: -1,
httpOnly: false,
secure: true,
sameSite: 'None',
sameSite: sameSiteStoredValueForNone,
}]));
});

Expand Down Expand Up @@ -274,7 +274,7 @@ it('should return secure cookies based on HTTP(S) protocol', async ({ context, b
}]);
});

it('should add cookies with an expiration', async ({ context }) => {
it('should add cookies with an expiration', async ({ context, sameSiteStoredValueForNone }) => {
const expires = Math.floor((Date.now() / 1000)) + 3600;
await context.addCookies([{
url: 'https://foo.com',
Expand All @@ -293,7 +293,7 @@ it('should add cookies with an expiration', async ({ context }) => {
expires,
httpOnly: false,
secure: true,
sameSite: 'None',
sameSite: sameSiteStoredValueForNone,
}]);
{
// Rollover to 5-digit year
Expand Down
8 changes: 6 additions & 2 deletions tests/library/browsercontext-fetch.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1245,7 +1245,7 @@ it('should work with connectOverCDP', async ({ browserName, browserType, server
}
});

it('should support SameSite cookie attribute over https', async ({ contextFactory, httpsServer, browserName, isWindows }) => {
it('should support SameSite cookie attribute over https', async ({ contextFactory, httpsServer, browserName, isWindows, sameSiteStoredValueForNone }) => {
// Cookies with SameSite=None must also specify the Secure attribute. WebKit navigation
// to HTTP url will fail if the response contains a cookie with Secure attribute, so
// we do HTTPS navigation.
Expand All @@ -1261,6 +1261,8 @@ it('should support SameSite cookie attribute over https', async ({ contextFactor
const [cookie] = await page.context().cookies();
if (browserName === 'webkit' && isWindows)
expect(cookie.sameSite).toBe('None');
else if (value === 'None')
expect(cookie.sameSite).toBe(sameSiteStoredValueForNone);
else
expect(cookie.sameSite).toBe(value);
});
Expand Down Expand Up @@ -1290,7 +1292,7 @@ it('fetch should not throw on long set-cookie value', async ({ context, server }
expect(cookies.map(c => c.name)).toContain('bar');
});

it('should support set-cookie with SameSite and without Secure attribute over HTTP', async ({ page, server, browserName, isWindows, isLinux }) => {
it('should support set-cookie with SameSite and without Secure attribute over HTTP', async ({ page, server, browserName, isWindows, isLinux, sameSiteStoredValueForNone }) => {
for (const value of ['None', 'Lax', 'Strict']) {
await it.step(`SameSite=${value}`, async () => {
server.setRoute('/empty.html', (req, res) => {
Expand All @@ -1305,6 +1307,8 @@ it('should support set-cookie with SameSite and without Secure attribute over HT
expect(cookie).toBeFalsy();
else if (browserName === 'webkit' && isWindows)
expect(cookie.sameSite).toBe('None');
else if (value === 'None')
expect(cookie.sameSite).toBe(sameSiteStoredValueForNone);
else
expect(cookie.sameSite).toBe(value);
});
Expand Down
Loading