Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
4c94081
chore: upgrade Chromium from v126 to v143 for asset discovery
Manoj-Katta Apr 17, 2026
c3b1f16
test(core): ignore favicon.ico in test server request log
Manoj-Katta Apr 19, 2026
319744f
fix(core): disable site isolation for Chrome 143 new headless
Manoj-Katta Apr 19, 2026
1b7f936
chore(ci): bump cache-key for Chromium v143 upgrade
Manoj-Katta Apr 20, 2026
f64f1f8
test(core): align test helpers with Chrome new-headless behavior (PPL…
Manoj-Katta Apr 27, 2026
5ba42dc
fix(core): disable Local Network Access checks for Chrome 143 (PPLT-5…
Manoj-Katta Apr 27, 2026
4f02ad6
chore(core): document Chrome 143 upgrade decisions per PR review
Manoj-Katta Apr 27, 2026
56306df
fix(core): handle Chrome 143 split request lifecycle and malformed Co…
Manoj-Katta Apr 27, 2026
6a5af29
fix(core): preserve original errorText for response-stage Fetch error…
Manoj-Katta Apr 28, 2026
890883a
test(core): cover favicon capture path explicitly
Manoj-Katta Apr 28, 2026
bd44f96
refactor(core): capture body at Fetch response stage instead of using…
Manoj-Katta Apr 28, 2026
98f5a4e
test(core): cover saveResponseResource catch and auto-fetched favicon…
Manoj-Katta Apr 29, 2026
96a014b
fix(core): guard Network constructor against null session.browser (PP…
Manoj-Katta Apr 29, 2026
0cad47f
test(core): cover untracked-request branch and simplify error message…
Manoj-Katta Apr 30, 2026
a0638fe
test(core): stabilize two timing-fragile tests under suite load (PPLT…
Manoj-Katta May 3, 2026
46025d7
test(core): attach catch handler synchronously on sync-snapshot promi…
Manoj-Katta May 3, 2026
563da4c
test(core): bump waitForTimeout to give failing upload reliable headr…
Manoj-Katta May 3, 2026
e09ee41
test(core): cover oversized/malformed branch for untracked requests (…
Manoj-Katta May 4, 2026
9ec37ac
fix(core): timeout responseReceived wait so worker scripts don't leak…
Manoj-Katta May 4, 2026
4a4252a
test(core): drop trailing blank line that broke yarn lint (PPLT-4214)
Manoj-Katta May 4, 2026
2bb505d
fix(core): make browser-launch failure path testable across Chrome ve…
Manoj-Katta May 7, 2026
b2fd751
fix(core): make worker-script responseReceived timeout observable (PP…
Manoj-Katta May 7, 2026
7b2fc4d
test(core): use platform-specific early-exit arg in launch-failure te…
Manoj-Katta May 8, 2026
9adeecd
fix(core): capture v143 worker scripts via direct HTTP fallback (PPLT…
Manoj-Katta May 8, 2026
37f5176
fix(core): widen v143 worker-script fallback for PlzDedicatedWorker (…
Manoj-Katta May 10, 2026
ec13879
refactor(core): remove unreachable no-response branch in saveResponse…
Manoj-Katta May 11, 2026
281a587
Revert "refactor(core): remove unreachable no-response branch in save…
Manoj-Katta May 11, 2026
0812609
Merge remote-tracking branch 'origin' into PPLT-4214/upgrade-chromium…
Manoj-Katta May 11, 2026
c20c581
test(core): cover network.js race-catch branches; drop istanbul annot…
Manoj-Katta May 11, 2026
2d48f20
test(core): drop CI-unstable direct worker-script direct-fetch spec (…
Manoj-Katta May 11, 2026
f0d9c8e
fix(core): harden v143 direct-fetch fallback + rename captureScriptDi…
Manoj-Katta May 13, 2026
334f062
fix(core): revert log.warn promotion in CDP-race catches; satisfy lint
Manoj-Katta May 13, 2026
9526661
test(core): close network.js coverage gap; mark unreachable else (PPL…
Manoj-Katta May 13, 2026
135f9c9
style(core): drop padded blank line at end of resource-errors describe
Manoj-Katta May 13, 2026
a22e8bf
refactor(core): extract direct-fetch helpers for clean coverage (PPLT…
Manoj-Katta May 14, 2026
472d349
refactor(core): extract raceWithTimeout helper for clean coverage (PP…
Manoj-Katta May 14, 2026
ebad827
fix(core): honor server Content-Type on direct-fetch; safer mime fall…
Manoj-Katta May 14, 2026
59852c6
refactor(core): extract DISABLED_FEATURES + resolveDirectFetchMime he…
Manoj-Katta May 14, 2026
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
2 changes: 1 addition & 1 deletion .github/.cache-key
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
; ;
/ \
_____________/_ __ \_____________
Times we have broken CI: 3
Times we have broken CI: 4
Times Windows has broken CI: 99+
11 changes: 9 additions & 2 deletions packages/core/src/browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,15 @@ export class Browser extends EventEmitter {
#lastid = 0;

args = [
// disable the translate popup and optimization downloads
'--disable-features=Translate,OptimizationGuideModelDownloading',
// disable: translate popup, optimization downloads, baseline site
// isolation (so cross-origin sub-resources and worker fetches stay in
// the main renderer for interception), HTTPS-first navigation blocking,
// and Local Network Access permission checks (Chrome 143+ blocks
// sub-resource requests to *.localhost / 127.0.0.1 / RFC1918 with
// `LocalNetworkAccessPermissionDenied` when the document was served
// via Fetch.fulfillRequest from asset discovery — there is no permission
// prompt available in headless to grant the access).
Comment thread
Manoj-Katta marked this conversation as resolved.
Outdated
'--disable-features=Translate,OptimizationGuideModelDownloading,IsolateOrigins,site-per-process,HttpsFirstBalancedModeAutoEnable,LocalNetworkAccessChecks',
Comment thread
Manoj-Katta marked this conversation as resolved.
Outdated
Comment thread
Manoj-Katta marked this conversation as resolved.
Outdated
// disable several subsystems which run network requests in the background
'--disable-background-networking',
// disable task throttling of timer tasks from background pages
Expand Down
12 changes: 6 additions & 6 deletions packages/core/src/install.js
Original file line number Diff line number Diff line change
Expand Up @@ -175,13 +175,13 @@ export function chromium({
});
}

// default chromium revisions corresponds to v126.0.6478.184
// default chromium revisions corresponds to v143.0.7499.169
chromium.revisions = {
linux: '1300309',
win64: '1300297',
win32: '1300295',
darwin: '1300293',
darwinArm: '1300314'
linux: '1536366',
win64: '1536376',
win32: '1536377',
Comment thread
Manoj-Katta marked this conversation as resolved.
darwin: '1536380',
darwinArm: '1536376'
Comment thread
Manoj-Katta marked this conversation as resolved.
Comment thread
Manoj-Katta marked this conversation as resolved.
};

// export the namespace by default
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/network.js
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ async function makeDirectRequest(network, request, session) {
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'font',
'sec-ch-ua': '"Chromium";v="123", "Google Chrome";v="123", "Not?A_Brand";v="99"',
'sec-ch-ua': '"Chromium";v="143", "Google Chrome";v="143", "Not?A_Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
Comment thread
Manoj-Katta marked this conversation as resolved.
'sec-fetch-user': '?1',
Expand Down
6 changes: 6 additions & 0 deletions packages/core/test/helpers/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ export function createTestServer({ default: defaultReply, ...replies }, port = 8
server.route(async (req, res, next) => {
let pathname = req.url.pathname;
if (req.url.search) pathname += req.url.search;
// Chrome >=128 new headless auto-requests /favicon.ico for every navigation.
// Reply 204 so the browser doesn't capture it as a snapshot resource, and
// skip it from the requests log so per-test request assertions stay stable.
if (req.url.pathname === '/favicon.ico') {
Comment thread
Manoj-Katta marked this conversation as resolved.
Outdated
return res.writeHead(204).end();
}
server.requests.push(req.body ? [pathname, req.body, req.headers] : [pathname, req.headers]);
let reply = replies[pathname] || defaultReply;
return reply ? await reply(req, res) : next();
Expand Down
5 changes: 4 additions & 1 deletion packages/core/test/snapshot.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1535,10 +1535,13 @@ describe('Snapshot', () => {

await percy.idle();

// srcdoc HTML attribute serialization: pre-Chrome-128 left `<` `>` literal
// inside attribute values; Chrome >=128 entity-escapes them per HTML5 spec.
// Accept either form.
Comment thread
Manoj-Katta marked this conversation as resolved.
Outdated
expect(Buffer.from((
api.requests['/builds/123/resources'][0]
.body.data.attributes['base64-content']
), 'base64').toString()).toMatch(/<iframe.*srcdoc=".*<p>Foo<\/p>/);
), 'base64').toString()).toMatch(/<iframe.*srcdoc=".*(?:<p>Foo<\/p>|&lt;p&gt;Foo&lt;\/p&gt;)/);
});

it('errors if execute cannot be serialized', async () => {
Expand Down
Loading