Make in-page callback survive navigations

This patch makes in-page callbacks survive navigations via
running in-page harness code on page load.
This commit is contained in:
Andrey Lushnikov
2017-05-12 17:55:29 -07:00
parent ab6a96a991
commit e8af69e5bb
2 changed files with 63 additions and 19 deletions

View File

@@ -1,6 +1,9 @@
var path = require('path');
var Browser = require('../lib/Browser');
describe('Page', function() {
var EMPTY_PAGE = 'file://' + path.join(__dirname, 'assets', 'empty.html');
describe('Puppeteer', function() {
var browser;
var page;
@@ -29,6 +32,30 @@ describe('Page', function() {
var result = await page.evaluateAsync(() => Promise.resolve(8 * 7));
expect(result).toBe(56);
}));
describe('Page.setInPageCallback', function() {
it('should work', SX(async function() {
await page.setInPageCallback('callController', function(a, b) {
return a * b;
});
var result = await page.evaluate(function() {
return callController(9, 4);
});
expect(result).toBe(36);
}));
it('should survive navigation', SX(async function() {
await page.setInPageCallback('callController', function(a, b) {
return a * b;
});
await page.navigate(EMPTY_PAGE);
var result = await page.evaluate(function() {
return callController(9, 4);
});
expect(result).toBe(36);
}));
});
});
// Since Jasmine doesn't like async functions, they should be wrapped