Commit Graph

954 Commits

Author SHA1 Message Date
Joel Einbinder
1c2adf61e9 fix(workers): workaround worker execution context flakiness (#2596)
Some of the worker tests were failing on the bots. After investigating, I found one race in the test, and one race upstream in Chromium which I filed upstream as https://crbug.com/846099. But I added a small hack here as a temporary workaround.

References #2632
2018-05-30 18:08:27 -07:00
Yotam Laufer
469b910a2d feat(page): allow screenshot to return a base64 string (#2586)
Fixes #2566
2018-05-30 14:27:08 -07:00
Yogesh Singh
e1c40bd776 chore(examples): Change networkidle2 to networkidle0 (#2618)
Switch example to networkidle0 to reduce inconsistency of console messages 

Fixes #2587
2018-05-30 14:17:41 -07:00
Joel Einbinder
1bbd094624 feat(test): enable dumpio in tests #2610
This patch allows logging the output of the Chromium process to be enabled in tests by passing in the environment variable `DUMPIO=true`.

Additionally, the `stderr` of the Chromium process will always be logged in the the "Output" section of failing page tests.
2018-05-29 15:45:03 -07:00
Joel Einbinder
8e12d197a2 fix(tests): normalize scrollbars in headful tests (#2622)
Scrollbars look different on different platforms, so must be made invisible in tests. As a drive-by, xdescribe was broken with the new test runner.

References #2524
2018-05-29 15:30:08 -07:00
Yaniv Efraim
41ccd0bded chore(docs): remove old and non relevant function usage (#2623) 2018-05-29 15:25:20 -07:00
Robert Shilston
5ff67dbdfe docs(api.md): Add the word "network" (#2624) 2018-05-29 15:24:26 -07:00
Joel Einbinder
c9a843baa0 chore(types): generate protocol.d.ts on install (#2625)
Previously protocol.d.ts was generated on `npm run tsc`. This was inconvenient because it meant that vscode checking was wrong until type checking was run manually, and was inefficient because it necessarily regenerated the types even if no new Chromium was downloaded. This patch generates the types when npm install is run from the github checkout, assuming a new Chromium revision was downloaded.
2018-05-29 15:23:32 -07:00
Yaniv Efraim
7d64d40d66 chore(frame): minor refactor in FrameManager (#2597) 2018-05-25 17:29:11 -07:00
Yaniv Efraim
f6393d876e docs(api.md): mention that page.$$eval and frame.$$eval return arrays (#2595)
Docs about `page.$$eval` and `frame.$$eval` are not accurate and might be confusing. `document.querySelectorAll` returns `NodeList`, while `frame.$$eval` is actually doing `Array.from(querySelectorAll(selector))`, which actually returns an array. 

This makes things this possible:

`await page.$$eval('div', divs => divs.map...)` 

This patch fixes docs to mention that $$eval is actually performing:

`Array.from(querySelectorAll(selector))`

Which will let the user understand that the element he receives is an array, and not a NodeList.
2018-05-25 17:28:13 -07:00
Yaniv Efraim
b8df8bdf4a feat(launcher): launch browser with 'about:blank' by default (#2594)
fixes #2402
2018-05-25 17:26:40 -07:00
Vasyl Pahut
1e07925e26 feat(elementhandle): add elementHandle.$$eval method (#2589)
Fixes #2401
2018-05-25 16:56:51 -07:00
Alex Veligura
32f4c173c8 feat(page): add page.isClosed method (#2588)
Fixes #2501.
2018-05-25 16:53:57 -07:00
Andrey Lushnikov
b522ecaa65
docs(api.md): update puppeteer overview (#2584)
Puppeteer tip-of-tree includes both workers and browser contexts.
2018-05-25 16:47:15 -07:00
Andrey Lushnikov
debfe7e0b1
fix(page): respect timeout 0 in page.waitForFunction (#2563)
The in-page task should not set timeout when timeout is 0.

Fixes #2540.
2018-05-25 16:45:04 -07:00
Paul Irish
6a0627a411 fix(page): Don't report clientside error with a node stack attached (#2572)
This patch stops reporting node.js stacks as part of `pageerror` event.
2018-05-25 16:44:25 -07:00
Darío Kondratiuk
17bc6515de docs(api.md): goForward should say "can not go forward" (#2578) 2018-05-21 14:37:58 -07:00
Joel Einbinder
93fe2b57d6 feat(Page): introduce workers (#2560)
This adds `page.workers()`, and two events `workercreated` and `workerdestroyed`. It also forwards logs from a worker into the page `console` event.

Only dedicated workers are supported for now, ServiceWorkers will probably work differently because they aren't necessarily associated with a single page.

Fixes #2350.
2018-05-21 14:31:11 -07:00
Yaniv Efraim
b474f2ce87 test: add a missing test for elementHandle. (#2580) 2018-05-21 13:08:31 -07:00
Andrey Lushnikov
2d9e5a0d25
test: add test that validates that pages open with userDataDir arg (#2564)
References #2538.
2018-05-17 14:49:03 -07:00
Andrey Lushnikov
51645932b7
refactor: do not pass user options to browser constructor (#2562)
This patch starts explicitly passing allowed options to the `Browser`
class. This, for example, makes it impossible to pass `appMode` as
an option to the `pptr.connect`.
2018-05-16 18:09:59 -07:00
Andrey Lushnikov
2d82e0891a
chore: bump dependencies (#2559)
This patch bumps dependencies so that `npm audit` doesn't yell
at us.

Drive-by: fix browsercontext test to run nicely in parallel mode.
2018-05-16 15:35:51 -07:00
Matej Plavevski
de82b87cfa docs(documentation) capitalize and end sentences (#2537) 2018-05-16 14:55:27 -07:00
Andrey Lushnikov
1c4a8f0bbb
docs(README): remove duplicate line 2018-05-16 14:39:02 -07:00
Rafal Jarmolkovič
23d25a6e12 feat(Target): Pass through "background_page" types (#2439) (#2493) 2018-05-16 14:36:34 -07:00
Andrey Lushnikov
3b03ff65c7
feat(BrowserContext): introduce Browser Contexts. (#2523)
This patch introduces Browser Contexts and methods to manage them:
- `browser.createIncognitoBrowserContext()` - to create new incognito
  context
- `browser.browserContext()` - to get all existing contexts
- `browserContext.dispose()` - to dispose incognito context.

Fixes #85.
2018-05-10 13:26:08 -07:00
Andrey Lushnikov
58c672b131
feat(Chromium): roll Chromium to r557152 (#2522)
This roll includes:
- https://crrev.com/556783 - Headless: posttask protocol message replies.
- https://crrev.com/556881 - Reland "DevTools: change Target.disposeBrowserContext to force-close WebContents""
- https://crrev.com/556923 - DevTools: untie browser context lifetime from protocol session
- https://crrev.com/556977 - DevTools: implement Target.getBrowserContexts() method
- https://crrev.com/557085 - DevTools: fix Target.disposeBrowserContext() to work with empty contexts
- https://crrev.com/557087 - Headless: Target.disposeBrowserContext() should close context

References #85.
2018-05-09 10:11:21 -07:00
Andrey Lushnikov
d02440d1ea
chore: bump version to v1.4.0-post (#2521) 2018-05-09 07:18:25 -07:00
Andrey Lushnikov
808bf8e558
chore: mark version v1.4.0 (#2517) 2018-05-08 21:46:32 -07:00
Denny Ku(kuni)
88b996877f feat(ElementHandle): introduce elementHandle.$eval (#2407)
This patch introduces `elementHandle.$eval` method.

References #2401.
2018-05-08 18:17:59 -07:00
Joel Einbinder
1d225cfa17 fix: allow user gesture restricted code to be run in page.evaluate (#2503)
Fixes #2502
2018-05-04 21:45:16 +03:00
Andrey Lushnikov
1db4986d12
feat(Chromium): roll Chromium to r555668 (#2495)
This roll includes:
- https://crrev.com/555640 - DevTools: change Target.disposeBrowserContext
to force-close WebContents

References #85.
2018-05-04 02:03:09 +03:00
Andrey Lushnikov
a310d57d84
feat(Page): add option to run 'beforeunload' when closing the page (#2478)
Today, `page.close()` method doesn't run page's beforeunload listeners.
This way users can be sure that `page.close()` actually closes the
page.

This patch adds an optional `runBeforeUnload` option to the
`page.close()` method that would run beforeunload listeners. Note:
running beforeunload handlers might cancel page closing.

Fixes #2386.
2018-05-03 01:51:45 +03:00
Andrey Lushnikov
376018854b
feat(Chromium): roll Chromium to r554716 (#2477)
This roll includes:
- https://crrev.com/553657 - headless: create incognito profiles with
Target.createBrowserContext

References #85, #2473
2018-05-01 03:39:16 +03:00
Yaniv Efraim
afee0104be docs(README): add a debugging section (#2467) 2018-04-30 21:01:35 +03:00
Yaniv Efraim
e236887bbb feat(Page): report 'Log' domain entries as 'console' events (#2400)
Fixes #1939
2018-04-28 00:40:09 -04:00
Andrey Lushnikov
58c46680f3
fix(Page): fix page.goto to return Response when page pushes new state (#2468)
]Fixes #2411.
2018-04-28 00:15:40 -04:00
Yaniv Efraim
a2a9100248 docs(examples): add a link for jest-puppeteer (#2466) 2018-04-27 23:02:37 -04:00
Yaniv Efraim
eb1826bc49 feat(DeviceDescriptors): add pixel2/pixel2 xl (#2464)
fixes #2448
2018-04-27 14:45:02 -07:00
Andrey Lushnikov
f797f8c307
docs(api.md): add explanation to page.waitForNavigation (#2354)
Fixes #1860
2018-04-26 13:32:40 -07:00
Andrey Lushnikov
eded38c82a
test: verify file url interception works as expected (#2451)
This was fixed upstream: https://crrev.com/550319
Rolled into pptr: https://github.com/GoogleChrome/puppeteer/pull/2393

Fixes #1506.
2018-04-26 13:32:23 -07:00
Andrey Lushnikov
8a62b10fd0
chore: testrunner's ".not" should print appropriate message (#2459)
When failing, the ".not" matchers should print their name
with ".not" prefix.
2018-04-26 11:13:22 -07:00
Paul Shibanov
9ae64f237c docs(troubleshooting): newest Chromium package supported on Alpine (#2453) 2018-04-26 08:37:10 -07:00
Andrey Lushnikov
b96815aa72
test: verify Page.goto fails when server returns 204 (#2452)
Fixed upstream: https://crrev.com/551261
Rolled into pptr: https://github.com/GoogleChrome/puppeteer/pull/2393

Fixes #1879.
2018-04-25 20:20:11 -07:00
Andrey Lushnikov
d9bb7ee8a0
chore: add a bunch of non-needed files to .npmignore (#2450)
There's no need to publish these files. This saves ~22kb
in published size.
2018-04-25 20:19:40 -07:00
Andrey Lushnikov
0820d48f80
chore: link to the latest-released API from the README.md (#2449)
This patch adds a preprocessor command to link to the latest-released
API from the README.md.

Fixes #1923.
2018-04-25 18:18:08 -07:00
Andrey Lushnikov
13a41495aa
chore(doclint): remove SourceFactory (#2447)
SourceFactory was meant to cache Sources so that they could be used
in different preprocessor tasks.

This turned out to be over-engineering. This patch kills the layer.
2018-04-25 18:07:20 -07:00
Andrey Lushnikov
6d19db4df1
chore: enhance preprocessor commands to automate releases. (#2446)
Last release v1.3.0 had an error in the documentation, claiming
it wasn't released.

This patch makes sure we have a little bit of automation in place
to save us from this in future.
2018-04-25 17:11:45 -07:00
Ran Yitzhaki
8fce3195d6 fix(Launcher): exit the process after killing chrome on SIGINT (#2428)
This is a fix for this issue https://github.com/facebook/jest/issues/5748

In the issue, `puppeteer.launch` method is called from jest `globalSetup` script which [is running on the same process as jest](6a77ee37ec/packages/jest-cli/src/run_jest.js (L242)).

Puppeteer catches `SIGINT` in order to kill chrome, but it also replaces the default behaviour of `SIGINT`, [which is to exit with status code 130](https://nodejs.org/dist/latest-v9.x/docs/api/all.html#process_signal_events). In jest's case, the process does not exit, which keeps the process hanging in a weird way.

This PR makes sure that the process exits after killing chrome.
2018-04-25 15:29:14 -07:00
Andrey Lushnikov
84d7b4963e
feat(Chromium): roll Chromium to r553380 (#2442)
This roll includes:
- https://crrev.com/552071 - DevTools: introduce Page.close() protocol method
- https://crrev.com/553193 - Introduce BrowserContext::UniqueId
- https://crrev.com/553268 - DevTools(Protocol): expose BrowserContextId in TargetInfo
- https://crrev.com/553323 - DevTools: implement Target.createBrowserContext for non-headless mode

References #85, #2386.
2018-04-25 00:43:01 -07:00