feat(webkit): roll to r2083 (#32813)
This commit is contained in:
parent
9bff4d7eab
commit
463bd55cf0
|
|
@ -19,7 +19,7 @@ runs:
|
||||||
elif [[ "$version" == "12" || "$version" == "13" ]]; then
|
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);"
|
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
|
else
|
||||||
echo "macOS version is unsupported. Version is $version, exiting"
|
echo "Skipping unsupported macOS version $version"
|
||||||
exit 1
|
exit 0
|
||||||
fi
|
fi
|
||||||
echo "Successfully allowed microphone access"
|
echo "Successfully allowed microphone access"
|
||||||
|
|
|
||||||
9
.github/workflows/tests_secondary.yml
vendored
9
.github/workflows/tests_secondary.yml
vendored
|
|
@ -50,10 +50,15 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
# Intel: macos-13, macos-14-large
|
# Intel: macos-13, macos-14-large, macos-15-large
|
||||||
# Arm64: macos-13-xlarge, macos-14
|
# Arm64: macos-13-xlarge, macos-14 macos-15
|
||||||
os: [macos-13, macos-13-xlarge, macos-14-large, macos-14]
|
os: [macos-13, macos-13-xlarge, macos-14-large, macos-14]
|
||||||
browser: [chromium, firefox, webkit]
|
browser: [chromium, firefox, webkit]
|
||||||
|
include:
|
||||||
|
- os: macos-15-large
|
||||||
|
browser: webkit
|
||||||
|
- os: macos-15
|
||||||
|
browser: webkit
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "webkit",
|
"name": "webkit",
|
||||||
"revision": "2082",
|
"revision": "2083",
|
||||||
"installByDefault": true,
|
"installByDefault": true,
|
||||||
"revisionOverrides": {
|
"revisionOverrides": {
|
||||||
"mac10.14": "1446",
|
"mac10.14": "1446",
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
|
||||||
'mac13-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
|
'mac13-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
|
||||||
'mac14': 'builds/chromium/%s/chromium-mac.zip',
|
'mac14': 'builds/chromium/%s/chromium-mac.zip',
|
||||||
'mac14-arm64': 'builds/chromium/%s/chromium-mac-arm64.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',
|
'win64': 'builds/chromium/%s/chromium-win64.zip',
|
||||||
},
|
},
|
||||||
'chromium-tip-of-tree': {
|
'chromium-tip-of-tree': {
|
||||||
|
|
@ -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',
|
'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': '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',
|
'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',
|
'win64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-win64.zip',
|
||||||
},
|
},
|
||||||
'firefox': {
|
'firefox': {
|
||||||
|
|
@ -154,6 +158,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
|
||||||
'mac13-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
|
'mac13-arm64': 'builds/firefox/%s/firefox-mac-arm64.zip',
|
||||||
'mac14': 'builds/firefox/%s/firefox-mac.zip',
|
'mac14': 'builds/firefox/%s/firefox-mac.zip',
|
||||||
'mac14-arm64': 'builds/firefox/%s/firefox-mac-arm64.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',
|
'win64': 'builds/firefox/%s/firefox-win64.zip',
|
||||||
},
|
},
|
||||||
'firefox-beta': {
|
'firefox-beta': {
|
||||||
|
|
@ -181,6 +187,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
|
||||||
'mac13-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
|
'mac13-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.zip',
|
||||||
'mac14': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
|
'mac14': 'builds/firefox-beta/%s/firefox-beta-mac.zip',
|
||||||
'mac14-arm64': 'builds/firefox-beta/%s/firefox-beta-mac-arm64.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',
|
'win64': 'builds/firefox-beta/%s/firefox-beta-win64.zip',
|
||||||
},
|
},
|
||||||
'webkit': {
|
'webkit': {
|
||||||
|
|
@ -208,6 +216,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
|
||||||
'mac13-arm64': 'builds/webkit/%s/webkit-mac-13-arm64.zip',
|
'mac13-arm64': 'builds/webkit/%s/webkit-mac-13-arm64.zip',
|
||||||
'mac14': 'builds/webkit/%s/webkit-mac-14.zip',
|
'mac14': 'builds/webkit/%s/webkit-mac-14.zip',
|
||||||
'mac14-arm64': 'builds/webkit/%s/webkit-mac-14-arm64.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',
|
'win64': 'builds/webkit/%s/webkit-win64.zip',
|
||||||
},
|
},
|
||||||
'ffmpeg': {
|
'ffmpeg': {
|
||||||
|
|
@ -235,6 +245,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
|
||||||
'mac13-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
|
'mac13-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
|
||||||
'mac14': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
|
'mac14': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
|
||||||
'mac14-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.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',
|
'win64': 'builds/ffmpeg/%s/ffmpeg-win64.zip',
|
||||||
},
|
},
|
||||||
'android': {
|
'android': {
|
||||||
|
|
@ -262,6 +274,8 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
|
||||||
'mac13-arm64': 'builds/android/%s/android.zip',
|
'mac13-arm64': 'builds/android/%s/android.zip',
|
||||||
'mac14': 'builds/android/%s/android.zip',
|
'mac14': 'builds/android/%s/android.zip',
|
||||||
'mac14-arm64': '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',
|
'win64': 'builds/android/%s/android.zip',
|
||||||
},
|
},
|
||||||
// TODO(bidi): implement downloads.
|
// TODO(bidi): implement downloads.
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ export type HostPlatform = 'win64' |
|
||||||
'mac12' | 'mac12-arm64' |
|
'mac12' | 'mac12-arm64' |
|
||||||
'mac13' | 'mac13-arm64' |
|
'mac13' | 'mac13-arm64' |
|
||||||
'mac14' | 'mac14-arm64' |
|
'mac14' | 'mac14-arm64' |
|
||||||
|
'mac15' | 'mac15-arm64' |
|
||||||
'ubuntu18.04-x64' | 'ubuntu18.04-arm64' |
|
'ubuntu18.04-x64' | 'ubuntu18.04-arm64' |
|
||||||
'ubuntu20.04-x64' | 'ubuntu20.04-arm64' |
|
'ubuntu20.04-x64' | 'ubuntu20.04-arm64' |
|
||||||
'ubuntu22.04-x64' | 'ubuntu22.04-arm64' |
|
'ubuntu22.04-x64' | 'ubuntu22.04-arm64' |
|
||||||
|
|
@ -47,9 +48,9 @@ function calculatePlatform(): { hostPlatform: HostPlatform, isOfficiallySupporte
|
||||||
macVersion = 'mac10.15';
|
macVersion = 'mac10.15';
|
||||||
} else {
|
} else {
|
||||||
// ver[0] >= 20
|
// ver[0] >= 20
|
||||||
const LAST_STABLE_MAC_MAJOR_VERSION = 14;
|
const LAST_STABLE_MACOS_MAJOR_VERSION = 15;
|
||||||
// Best-effort support for MacOS beta versions.
|
// 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.
|
// BigSur is the first version that might run on Apple Silicon.
|
||||||
if (os.cpus().some(cpu => cpu.model.includes('Apple')))
|
if (os.cpus().some(cpu => cpu.model.includes('Apple')))
|
||||||
macVersion += '-arm64';
|
macVersion += '-arm64';
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ import type { TestInfo } from '@playwright/test';
|
||||||
export type BrowserTestWorkerFixtures = PageWorkerFixtures & {
|
export type BrowserTestWorkerFixtures = PageWorkerFixtures & {
|
||||||
browserVersion: string;
|
browserVersion: string;
|
||||||
defaultSameSiteCookieValue: string;
|
defaultSameSiteCookieValue: string;
|
||||||
|
sameSiteStoredValueForNone: string;
|
||||||
allowsThirdParty: boolean;
|
allowsThirdParty: boolean;
|
||||||
browserMajorVersion: number;
|
browserMajorVersion: number;
|
||||||
browserType: BrowserType;
|
browserType: BrowserType;
|
||||||
|
|
@ -86,6 +87,13 @@ const test = baseTest.extend<BrowserTestTestFixtures, BrowserTestWorkerFixtures>
|
||||||
throw new Error('unknown browser - ' + browserName);
|
throw new Error('unknown browser - ' + browserName);
|
||||||
}, { scope: 'worker' }],
|
}, { 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) => {
|
browserMajorVersion: [async ({ browserVersion }, run) => {
|
||||||
await run(Number(browserVersion.split('.')[0]));
|
await run(Number(browserVersion.split('.')[0]));
|
||||||
}, { scope: 'worker' }],
|
}, { scope: 'worker' }],
|
||||||
|
|
|
||||||
|
|
@ -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([{
|
await context.addCookies([{
|
||||||
url: 'https://foo.com',
|
url: 'https://foo.com',
|
||||||
name: 'doggo',
|
name: 'doggo',
|
||||||
|
|
@ -178,7 +178,7 @@ it('should get cookies from multiple urls', async ({ context, browserName, isWin
|
||||||
expires: -1,
|
expires: -1,
|
||||||
httpOnly: false,
|
httpOnly: false,
|
||||||
secure: true,
|
secure: true,
|
||||||
sameSite: 'None',
|
sameSite: sameSiteStoredValueForNone,
|
||||||
}]));
|
}]));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -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;
|
const expires = Math.floor((Date.now() / 1000)) + 3600;
|
||||||
await context.addCookies([{
|
await context.addCookies([{
|
||||||
url: 'https://foo.com',
|
url: 'https://foo.com',
|
||||||
|
|
@ -293,7 +293,7 @@ it('should add cookies with an expiration', async ({ context }) => {
|
||||||
expires,
|
expires,
|
||||||
httpOnly: false,
|
httpOnly: false,
|
||||||
secure: true,
|
secure: true,
|
||||||
sameSite: 'None',
|
sameSite: sameSiteStoredValueForNone,
|
||||||
}]);
|
}]);
|
||||||
{
|
{
|
||||||
// Rollover to 5-digit year
|
// Rollover to 5-digit year
|
||||||
|
|
|
||||||
|
|
@ -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
|
// 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
|
// to HTTP url will fail if the response contains a cookie with Secure attribute, so
|
||||||
// we do HTTPS navigation.
|
// we do HTTPS navigation.
|
||||||
|
|
@ -1261,6 +1261,8 @@ it('should support SameSite cookie attribute over https', async ({ contextFactor
|
||||||
const [cookie] = await page.context().cookies();
|
const [cookie] = await page.context().cookies();
|
||||||
if (browserName === 'webkit' && isWindows)
|
if (browserName === 'webkit' && isWindows)
|
||||||
expect(cookie.sameSite).toBe('None');
|
expect(cookie.sameSite).toBe('None');
|
||||||
|
else if (value === 'None')
|
||||||
|
expect(cookie.sameSite).toBe(sameSiteStoredValueForNone);
|
||||||
else
|
else
|
||||||
expect(cookie.sameSite).toBe(value);
|
expect(cookie.sameSite).toBe(value);
|
||||||
});
|
});
|
||||||
|
|
@ -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');
|
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']) {
|
for (const value of ['None', 'Lax', 'Strict']) {
|
||||||
await it.step(`SameSite=${value}`, async () => {
|
await it.step(`SameSite=${value}`, async () => {
|
||||||
server.setRoute('/empty.html', (req, res) => {
|
server.setRoute('/empty.html', (req, res) => {
|
||||||
|
|
@ -1305,6 +1307,8 @@ it('should support set-cookie with SameSite and without Secure attribute over HT
|
||||||
expect(cookie).toBeFalsy();
|
expect(cookie).toBeFalsy();
|
||||||
else if (browserName === 'webkit' && isWindows)
|
else if (browserName === 'webkit' && isWindows)
|
||||||
expect(cookie.sameSite).toBe('None');
|
expect(cookie.sameSite).toBe('None');
|
||||||
|
else if (value === 'None')
|
||||||
|
expect(cookie.sameSite).toBe(sameSiteStoredValueForNone);
|
||||||
else
|
else
|
||||||
expect(cookie.sameSite).toBe(value);
|
expect(cookie.sameSite).toBe(value);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue