Commit Graph

999 Commits

Author SHA1 Message Date
Fedor Korotkov
ea8ec1e567 chore(ci): Configure OSX on Cirrus CI (#2774)
Cirrus CI recently started supporting Mac OS builds. This PR adds a CI task to test Puppeteer on MacOS.

It uses Node 8 since only [Node 6 and Node 8 are LTS](https://github.com/nodejs/Release#release-schedule) so `brew` only has receipts for those two TLS versions besides the latest one.
2018-06-19 13:03:30 -07:00
Mickael van der Beek
1064aa4476 feat(request): add new error reasons for request.abort() (#2771)
As the title indicated, adds two allowed error codes that are specified in the Chrome Developer Tools Protocol specifications but missing from the Puppeteer enum:

https://chromedevtools.github.io/devtools-protocol/tot/Network#type-ErrorReason
2018-06-19 10:46:17 -07:00
Andrey Lushnikov
37dbfc2608
test: fix random tests flakiness (#2770)
These tests were not awaiting `page.evaluate` command, so
page could have been closed before the command returned.
2018-06-19 10:35:13 -07:00
Joel Einbinder
f197d2e208 fix: don't pass a reference to the page into frames (#2766) 2018-06-19 00:33:45 -07:00
Aleksey
b20cde67c6 fix(page): migrate exposeFunction from console.debug to Runtime.installBinding #2631
New way is faster and cleaner.
2018-06-18 13:41:03 -07:00
Andrey Lushnikov
af0bd15d88
test: split out ignoreHTTPSErrors tests (#2745)
We'll get more of these soon.
2018-06-14 16:48:14 -07:00
Andrey Lushnikov
c430138845
test: drop PDF tests (#2744)
We fully rely on upstream PDF functionality. Our PDF tests are inferior
to those upstream and inconvenient to write.
2018-06-14 16:42:10 -07:00
Andrey Lushnikov
861f070738
feat(chromium): roll Chromium to r567388 (#2743)
This roll includes:
- https://crrev.com/567104 - DevTools: introduce Target.exposeDevToolsProtocol() method

The patch includes a drive-by fix to DevToolsAgentHostImpl that
eliminats chromium crashes in certain cases.
2018-06-14 15:54:06 -07:00
Joel Einbinder
73f9c48081 feat: nicer protocol error messages (#2742)
This patch:
- stops appending `undefined` to our protocol messages unnecessarily.
- rewrites `Cannot find execution context id` to `Execution context was destroyed, most likely because of a navigation.` when it occurs from a Puppeteer ExecutionContext. The error message is left alone if it occurs via a CDPSession.
2018-06-14 15:27:59 -07:00
Yaniv Efraim
9a650c818d feat(element-handle): remove throw in case of empty elementHandle (#2740)
Fixes #2708
2018-06-14 14:28:52 -07:00
Yaniv Efraim
38f112f395 feat(target): add support for target.page for 'backgroud_page' (#2600)
This patch teaches `target.page()` method to attach to extension background pages.

Fixes #2438
2018-06-14 13:58:51 -07:00
Andrey Lushnikov
cd8d750628
fix(devicedescriptors): fix UA in DeviceDescriptors (#2741)
This patch:
- updates `utils/fetch_devices.js` script to format UAs for Chrome UAs
  and to add iPhone 6/7/8 as separate devices.
- re-generates `DeviceDescriptors.js` with the new script

Fixes #2730.
2018-06-14 13:55:09 -07:00
Andrey Lushnikov
ddfdaf97c5
fix(page): fix race condition in WaitTask (#2739)
This patch eliminates a common race condition with WaitTask, that
happens when predicate function gets resolved right before the execution
context gets destroyed.
This situation results in a "Cannot find context with specified id undefined"
exception.

Credits go to @jakub300 for his wonderful [investigation](https://github.com/GoogleChrome/puppeteer/issues/1325#issuecomment-395472092).

Fixes #1325.
2018-06-14 11:39:51 -07:00
Joel Einbinder
ed7a26cc95 feat(tracing): enable high resolution JavaScript sampling (#2702)
I've been told that this will make our JavaScript tracing 💯x more accurate, at minimal performance loss. Let's turn it on for everyone always.

Fixes #1300.
2018-06-14 10:33:05 -07:00
蒋璇
eca661096b docs(api.md): fix keyboard.press note about modifier keys (#2711) 2018-06-14 10:25:27 -07:00
Georgii Dolzhykov
9498b1057b fix(helpers): support thrown strings and numbers in getExceptionMessage (#2715)
Of course, strings aren't proper errors, but scripts sometimes do that, and Puppeteer loses such error messages.
2018-06-14 10:23:13 -07:00
Georgii Dolzhykov
93e128931f test: make tests work on non-English locales (#2736)
`Data.prototype.toString` may return non-ASCII characters, which aren't accepted by `setHeader`.

E.g., on Russian locale, it might look like this:
```
> new Date().toString()
'Thu Jun 14 2018 13:11:50 GMT+0300 (Финляндия (лето))'
```
2018-06-14 10:18:02 -07:00
Konstantin Simon Maria Möllers
1875cb4877 docs(api.md): fix return type docs of ElementHandle.$x (#2723) 2018-06-13 20:49:24 -07:00
Joel Einbinder
d481fd5147 fix(types): type FrameManager in Page.js (#2718) 2018-06-13 12:47:29 -07:00
Joel Einbinder
147f98d1f0
chore: bump version to v1.5.0-post (#2699) 2018-06-07 13:04:00 -07:00
Joel Einbinder
194d580026
chore: mark version v1.5.0 (#2698) 2018-06-07 12:19:25 -07:00
Joel Einbinder
75ba86f41a
fix: emit all arguments from worker console logs (#2697)
Log.entryAdded doesn't report all the arguments from console logs. This PR switches to use Runtime.consoleAPICalled.

fixes #2640
2018-06-07 11:21:35 -07:00
Andrey Lushnikov
90833352ba docs(contributing): add section about releasing to NPM (#2695) 2018-06-07 09:38:49 -07:00
Joel Einbinder
2ff0adcad8 feat: worker convenience methods (#2677)
This patch:
- adds `worker.evaluate` and `worker.evaluateHandle` methods as a shortcut to their execution context equivalents.
- makes the error messages a bit nicer when interacting with a closed worker (as opposed to a closed page).
- moves the worker tests into their own spec file.
2018-06-06 20:16:17 -05:00
Corey Cole
3e82a54fd1 docs: update slack invite link in README.md (#2690) 2018-06-06 20:12:44 -05:00
Andrey Lushnikov
36b87000e4
chore(ci): remove Win from Cirrus builds (#2689)
Remove Cirrus Win targets until there's a good resolution.

Postmortem:
- CirrusCI uses [Windows Server
Containers](https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/#windows-container-types) to run windows builds.
- Windows Server Containers don't include all the libraries that are required to run general application. See [msdn discussion](https://social.msdn.microsoft.com/Forums/en-US/a50e7dd7-c73f-45e0-89b4-92ba3ad2bcda/ieframedll-and-shdocvwdll-are-missing-from-windowsservercore-image?forum=windowscontainers).
- A recent [chromium commit](https://crrev.com/560677) added win dependencies missing in Windows Server Containers.

We'll be able to bring back Win builds on Cirrus once the full-fledged
Win containers are released (announced
[recently](https://channel9.msdn.com/Events/Build/2018/BRK2149).
2018-06-06 20:11:22 -05:00
Joel Einbinder
a058468948 feat: roll Chromium to r564778 (#2681)
This roll includes:
- https://chromium-review.googlesource.com/c/v8/v8/+/1086372 - [inspector] postpone API interrupts during creation of injected script

This fixes worker flakiness.

Fixes #2632
2018-06-06 09:48:56 -05:00
Andrey Lushnikov
4bc23319a2
chore(ci): temporary disable cirrus win builds (#2666)
Win bots all fail on Cirrus; disable them until the issue is resolved.

We still have win coverage with AppVeyour.
2018-06-02 11:45:14 -07:00
Andrey Lushnikov
efc0e0f96e
feat(chromium): roll Chromium to r563942 (#2665)
This roll includes:
- https://crrev.com/563869 - Headless: respect the --disable-breakpad flag
2018-06-02 09:56:47 -07:00
Andrey Lushnikov
d8023726c5
fix: disable OOPIF by default (#2661)
This patch disables OOPIF by default.

**NOTE**: this is a temporary bandaid for the time we're crafting
the full-fledged support for site isolation over DevTools protocol.

References #2548.
2018-06-01 15:20:37 -07:00
Fedor Korotkov
85d5a3348c chore(ci): switch Windows containers (#2662)
Cirrus CI got some optimizations for containers based of `microsoft/windowsservercore:latest`.

Now startup time for windows builds is around 1:30 seconds instead of around 4 minutes.

to: @aslushnikov
2018-06-01 15:15:16 -07:00
Andrey Lushnikov
9904da262e
chore(doclint): remove old unused table-of-contents generator (#2659)
We no longer use markdown-toc to generate table-of-contents.
2018-06-01 13:59:31 -07:00
Andrey Lushnikov
9955a1e673
fix(browser): ensure first page is created when browser is launched (#2658)
It's impossible to launch chromium without initial page.
This patch makes sure that `puppeteer.launch()` always returns a browser
with at least one page user can connect to.
2018-06-01 13:57:50 -07:00
Andrey Lushnikov
07b91f61a9
test: split out headful tests into headful.spec.js (#2657) 2018-06-01 13:48:34 -07:00
Darío Kondratiuk
e03802688d docs(api.md): Fix CDPSession code example (#2654) 2018-06-01 11:26:40 -07:00
Andrey Lushnikov
0f8c7e76c2
feat(launcher): disable crash reporting by default (#2652)
This patch disables crash reporting since it's not needed for
automation purposes.

It also deals some troubles for us since crashpad is a separate
process on Windows which has a larger lifetime than chromium.
This, in turn, prevents us from cleaning up profile directory.
2018-05-31 18:17:50 -07:00
Andrey Lushnikov
724fa512cf
feat(network): introduce Request.isNavigationRequest() method (#2633)
This patch introduces `Request.isNavigationRequest()` method.

Fixes #2627, #1132.
2018-05-31 17:38:30 -07:00
Jan Potoms
f6356683cd feat(targets): add target.opener() (#2641)
This adds a `.opener` property to a target so that its origin can be tracked.
For now returns `null` when there's no `openerId`.

Fixes #1830
2018-05-31 17:06:29 -07:00
Andrey Lushnikov
0b94fa70eb
chore: stop using console.assert everywhere (#2646)
Since Node 10, `console.assert` no longer throws an AssertionError.
(This is generally good since it aligns Node.js with Browsers.)

This patch migrates all usages of `console.assert` in our codebase.
- All the `lib/` and testing code is migrated onto a handmade `assert`
function. This is to make Puppeteer transpilation / bundling easier.
- All the tooling is switched to use Node's `assert` module.

Fixes #2547.
2018-05-31 16:53:51 -07:00
Andrey Lushnikov
35e3f12afa
fix(workers): swallow errors when auto-detaching from page subtargets (#2649)
Page subtargets (e.g. out-of-process iframes and others) sometimes
die before we send the 'detach' command.

This is harmless to us, but we shouldn't have an unhandled promise
rejection in this case.

Example crash: https://cirrus-ci.com/task/4884032470908928
2018-05-31 16:53:04 -07:00
Andrey Lushnikov
1c0ecc3d9c
test: fix flaky test (#2650)
When launching browser with a default URL, the page is not necessarily
loaded when we're reaching into it.
2018-05-31 16:39:49 -07:00
Andrey Lushnikov
0ba72df67d
test: verify ignoreHTTPSErrors works with puppeteer.connect (#2648)
References #2642.
2018-05-31 16:04:48 -07:00
Andrey Lushnikov
754df58d4e
docs(api.md): fix table-of-contents (#2636)
This patch drops the markdown-toc module and instead rolls out
our own simple markdown table-of-contents generator.

As a side effect, it fixes links to `page.$` and `page.$$`.
2018-05-31 14:21:43 -07:00
Andrey Lushnikov
0ad0096e21
chore(utils): change utils/check_availability.js to fetch last revisions (#2635)
This patch changes `utils/check_availability.js` to fetch last revisions
per platform when ran without any arguments.
2018-05-31 14:20:41 -07:00
Anish Karandikar
14b5144923 docs(examples): add link to puppeteer-har (#2643)
References #1916.
2018-05-31 12:07:48 -07:00
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