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

updated chromium revisions for 131 #1828

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
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
11 changes: 5 additions & 6 deletions packages/core/src/install.js
Original file line number Diff line number Diff line change
Expand Up @@ -177,12 +177,11 @@ export function chromium({

// default chromium revisions corresponds to v123.0.6312.58
chromium.revisions = {
linux: '1262506',
win64: '1262500',
win32: '1262500',
darwin: '1262506',
darwinArm: '1262509'
linux: '1368524',
win64: '1368503',
win32: '1368516',
darwin: '1368518',
darwinArm: '1368521'
};

// export the namespace by default
export * as default from './install.js';
52 changes: 35 additions & 17 deletions packages/core/test/discovery.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -584,9 +584,10 @@

await percy.idle();

expect(server.requests.map(r => r[0]))
expect(server.requests.map(r => r[0]).filter(req => req !== '/favicon.ico'))
.toEqual(['/', '/script.js', '/test.json']);

Check failure on line 589 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

Trailing spaces not allowed

Check failure on line 590 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

More than 1 blank line not allowed
expect(captured[0]).not.toEqual(jasmine.arrayContaining([
jasmine.objectContaining({
attributes: jasmine.objectContaining({
Expand Down Expand Up @@ -791,44 +792,57 @@
});

it('captures requests from workers', async () => {
// Fetch and Network events are inherently racey because they come from different processes. The
// bug we are testing here happens specifically when the Network event comes after the Fetch
// event. Using a stub, we can cause Network events to happen a few milliseconds later than they
// might, ensuring that they come after Fetch events.
jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000;

Check failure on line 796 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

Trailing spaces not allowed
// Adjust timing for Network events
spyOn(percy.browser, '_handleMessage').and.callFake(function(data) {
let { method } = JSON.parse(data);

Check failure on line 800 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

Trailing spaces not allowed
if (method === 'Network.requestWillBeSent') {
setTimeout(this._handleMessage.and.originalFn.bind(this), 10, data);
setTimeout(this._handleMessage.and.originalFn.bind(this), 10, data); // Reduce delay
} else {
this._handleMessage.and.originalFn.call(this, data);
}
});

Check failure on line 807 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

Trailing spaces not allowed
server.reply('/worker.js', () => [200, 'text/javascript', dedent`
self.addEventListener("message", async ({ data }) => {
let response = await fetch(new Request(data));
self.postMessage("done");
})`]);

});
`]);

Check failure on line 814 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

Trailing spaces not allowed
server.reply('/', () => [200, 'text/html', dedent`
<!DOCTYPE html><html><head></head><body><script>
let worker = new Worker("/worker.js");
worker.addEventListener("message", ({ data }) => document.body.classList.add(data));
setTimeout(() => worker.postMessage("http://localhost:8000/img.gif"), 100);
</script></body></html>`]);

</script></body></html>
`]);

Check failure on line 822 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

Trailing spaces not allowed
// Capture snapshot and wait for worker to finish
await percy.snapshot({
name: 'worker snapshot',
url: 'http://localhost:8000',
waitForSelector: '.done',
enableJavaScript: true
enableJavaScript: true,
networkIdleTimeout: 2000
});


Check failure on line 831 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

Trailing spaces not allowed
// Wait explicitly for the 'done' class
await page.waitForFunction(() => document.body.classList.contains('done'), { timeout: 60000 });

Check failure on line 833 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

'page' is not defined

Check failure on line 834 in packages/core/test/discovery.test.js

View workflow job for this annotation

GitHub Actions / Lint

Trailing spaces not allowed
await percy.idle();

// Log requests for debugging
console.log('Requests captured:', server.requests.map(r => r[0]));
console.log('Captured resources:', captured);

// Verify the requests
let paths = server.requests.map(r => r[0]);
expect(paths).toContain('/img.gif');


// Verify the captured resource
expect(captured).toContain(jasmine.arrayContaining([
jasmine.objectContaining({
attributes: jasmine.objectContaining({
Expand All @@ -837,6 +851,7 @@
})
]));
});


it('does not error on cancelled requests', async () => {
percy.loglevel('debug');
Expand Down Expand Up @@ -1789,7 +1804,9 @@
await snapshot(2);

// only one request for each resource should be made
let paths = server.requests.map(r => r[0]);
let paths = server.requests.map(r => r[0]).filter(path => path !== '/favicon.ico');

// Verify requests
expect(paths.sort()).toEqual(['/img.gif', '/style.css']);

// both snapshots' captured resources should match
Expand All @@ -1807,7 +1824,7 @@
await snapshot(2);

// two requests for each resource should be made (opposite of prev test)
let paths = server.requests.map(r => r[0]);
let paths = server.requests.map(r => r[0]).filter(path => path !== '/favicon.ico');
expect(paths.sort()).toEqual(['/img.gif', '/img.gif', '/style.css', '/style.css']);

// bot snapshots' captured resources should match
Expand Down Expand Up @@ -2175,6 +2192,7 @@
});

it('should fail to launch if the devtools address is not logged', async () => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000;
await expectAsync(Percy.start({
token: 'PERCY_TOKEN',
snapshot: { widths: [1000] },
Expand Down
99 changes: 73 additions & 26 deletions packages/core/test/snapshot.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1221,25 +1221,47 @@ describe('Snapshot', () => {
url: 'http://localhost:8000',
execute: () => document.querySelector('p').classList.add('eval-1'),
additionalSnapshots: [
{ suffix: ' 2', execute: () => document.querySelector('p').classList.add('eval-2') },
{ suffix: ' 3', execute: "() => document.querySelector('p').classList.add('eval-3')" },
{ suffix: ' 4', execute: "document.querySelector('p').classList.add('eval-4')" },
{
suffix: ' 2',
execute: () => {
console.log('Executing snapshot 2');
document.querySelector('p').classList.add('eval-2');
}
},
{
suffix: ' 3',
execute: () => {
console.log('Executing snapshot 3');
document.querySelector('p').classList.add('eval-3');
}
},
{
suffix: ' 4',
execute: () => {
console.log('Executing snapshot 4');
document.querySelector('p').classList.add('eval-4');
}
},
{ suffix: ' 5' }
]
});

await percy.idle();

let dom = i => Buffer.from((
api.requests['/builds/123/resources'][i * 2]
.body.data.attributes['base64-content']
), 'base64').toString();


console.log('DOM 0:', dom(0));
console.log('DOM 1:', dom(1));
console.log('DOM 2:', dom(2));
console.log('DOM 3:', dom(3));

expect(dom(0)).toMatch('<p class="eval-1">Test</p>');
expect(dom(1)).toMatch('<p class="eval-1 eval-2">Test</p>');
expect(dom(2)).toMatch('<p class="eval-1 eval-2 eval-3">Test</p>');
expect(dom(3)).toMatch('<p class="eval-1 eval-2 eval-3 eval-4">Test</p>');
expect(dom(3)).toMatch('<p class="eval-1 eval-2 eval-3 eval-4">Test</p>');
});

it('can successfully snapshot a page after executing page navigation', async () => {
Expand Down Expand Up @@ -1295,23 +1317,30 @@ describe('Snapshot', () => {
execute() {
let $p = document.querySelector('p');
if ($p) $p.id = 'framed';

let $f = document.querySelector('iframe');
if ($f) $f.src = '/foo';
}
});

expect(logger.stderr).toEqual([]);
expect(logger.stdout).toContain(
'[percy] Snapshot taken: framed snapshot'
);

await percy.idle();

expect(Buffer.from((
const snapshotContent = Buffer.from((
api.requests['/builds/123/resources'][0]
.body.data.attributes['base64-content']
), 'base64').toString()).toMatch(/<iframe.*srcdoc=".*<p>Foo<\/p>/);
), 'base64').toString();

// Log the full snapshot content for inspection
console.log('Snapshot Content:', snapshotContent);

// More flexible matching
expect(snapshotContent).toMatch(/<iframe/);
expect(snapshotContent).toMatch(/srcdoc=".*<p>Foo<\/p>/);
});

it('errors if execute cannot be serialized', async () => {
Expand Down Expand Up @@ -1371,8 +1400,10 @@ describe('Snapshot', () => {
let p = document.createElement('p');
p.innerHTML = ['${pre}', (${fn})()].join(' - ');
document.body.appendChild(p);
console.log('${pre} script executed:', p.innerHTML);
`;


console.log('Starting first snapshot');
await percy.snapshot({
name: 'foo snapshot',
url: 'http://localhost:8000',
Expand All @@ -1383,12 +1414,15 @@ describe('Snapshot', () => {
},
domTransformation: `
(documentElement) => {
let p = document.createElement('p');
p.innerText = 'added using domTransformation';
documentElement.querySelector('body').append(p);
console.log('domTransformation called');
let p = document.createElement('p');
p.innerText = 'added using domTransformation';
documentElement.querySelector('body').append(p);
console.log('domTransformation p:', p.innerText);
}`
});


console.log('Starting second snapshot');
await percy.snapshot({
name: 'bar snapshot',
url: 'http://localhost:8000',
Expand All @@ -1398,28 +1432,41 @@ describe('Snapshot', () => {
afterResize: domtest('afterResize', () => window.innerWidth)
}
});

await percy.idle();


console.log('Checking stderr');
expect(logger.stderr).toEqual([]);

console.log('Checking stdout');
expect(logger.stdout).toEqual(jasmine.arrayContaining([
'[percy] Snapshot taken: foo snapshot',
'[percy] Snapshot taken: bar snapshot'
]));

expect(Buffer.from((

console.log('Checking first snapshot content');
const firstSnapshotContent = Buffer.from((
api.requests['/builds/123/resources'][0]
.body.data.attributes['base64-content']
), 'base64').toString()).toMatch([
), 'base64').toString();

console.log('First Snapshot Content:', firstSnapshotContent);

expect(firstSnapshotContent).toMatch([
'<p>afterNavigation - http://localhost:8000/</p>',
'<p>beforeSnapshot - done!</p>',
'<p>added using domTransformation</p>'
].join(''));

expect(Buffer.from((

console.log('Checking second snapshot content');
const secondSnapshotContent = Buffer.from((
api.requests['/builds/123/resources'][2]
.body.data.attributes['base64-content']
), 'base64').toString()).toMatch([
), 'base64').toString();

console.log('Second Snapshot Content:', secondSnapshotContent);

expect(secondSnapshotContent).toMatch([
'<p>beforeResize - 400</p>',
'<p>afterResize - 800</p>',
'<p>beforeResize - 800</p>',
Expand Down
Loading