Commit Graph

1232 Commits

Author SHA1 Message Date
Andrey Lushnikov
56368aa07a
fix(page): page.click should work with disabled javascript (#2907)
Unfortunately, disabling javascript in page prevents any microtasks
to be executed even from puppeteer-originating javascript. As a
result, the IntersectionObserver hack we use to conditionally
scroll into view doesn't work.

To workaround this, we start always scrolling before clicking if
page's javascript is disabled.

Fixes #2898
2018-07-18 18:51:18 -07:00
Maxi Cilauro
e4e72c9e81 docs(api.md): fix typo (#2890) 2018-07-16 15:07:54 -07:00
Joel Einbinder
e7b0e0f448 feat(chromium): roll Chromium to r574897 (#2887)
This roll includes:
- https://crrev.com/574785 - DevTools: allow tracing over the remote debugging pipe.

This fixes tracing over the remote debugging pipe.
2018-07-13 11:07:24 -07:00
Andrey Lushnikov
8802253e13
chore: bump version to v1.6.0-post (#2883) 2018-07-12 18:11:51 -07:00
Andrey Lushnikov
3762de7b91
chore: mark version v1.6.0 (#2882) 2018-07-12 17:26:57 -07:00
Andrey Lushnikov
66fa0d3d53
test: cleanup page.waitForRequest/page.waitForResponse tests (#2880)
This patch removes unnecessary regexp tests and unifies all tests
between each other.
2018-07-12 15:32:18 -07:00
Matthew Shirley
726c8dc046 feat(page): introduce waitForRequest and waitForResponse methods (#2776)
This patch introduces `page.waitForRequest` and `page.waitForResponse` helper methods.

Fixes #2362
2018-07-12 14:36:31 -07:00
Andrey Lushnikov
3ebbf125ff
fix(coverage): report anonymous scripts with debugger:// urls (#2875)
Chrome DevTools shows anonymous scripts with yellow background and names
them with `debugger://VM<scriptId>` prefix.

This patch starts reporting the same debugger:// urls for anonymous
scripts in puppeteer's JS coverage. This might simplify debugging, e.g.
using `debugger;` statement to reveal the script in DevTools and later
matching it against the one in the coverage.
2018-07-11 21:05:16 -07:00
Andrey Lushnikov
254bc80811
chore: cleanup ElementHandle.isIntersectingViewport (#2874)
This patch:
- simplifies test reusing the `offscreenbuttons.html` asset
- aligns IntersectionObserver usage with the one we have for
  `ElementHandle._scrollIntoViewIfNeeded`.
2018-07-11 21:04:36 -07:00
Pavel Pomerantsev
12bc1e1a62 feat(coverage): add an option to collect coverage of anonymous scripts (#2796)
This patch adds `reportAnonymousScripts` option to the `coverage.startJSCoverage` method. With this option, anonymous scripts are reported as well.

Fixes #2777
2018-07-11 18:38:34 -07:00
Bogdan Ponomarenko
96c558d544 feat(elementhandle): introduce elementHandle.isIntersectingViewport() method. (#2673)
This patch introduces  `elementHandle.isIntersectingViewport()` method returns
true if element is visible in the viewport.

Fixes #2629.
2018-07-11 17:51:04 -07:00
Benjamin Atkin
4f8d00e64e docs(readme): Update README.md (#2863) 2018-07-11 17:07:27 -07:00
Fedor Korotkov
e445e1c8b8 chore(ci): disable brew auto-update (#2861) 2018-07-10 05:23:51 +03:00
Nat Zimmermann
88362f710f docs(readme.md): Fix typo (#2858) 2018-07-09 21:56:31 +03:00
Andrey Lushnikov
9313c83ad2
docs(readme): update FAQ (#2826) 2018-07-05 09:13:26 +03:00
Matthew Haughton
eb53a8fdd0 docs(api.md): Fix selector description for pages & frames (#2841) 2018-07-05 03:01:40 +03:00
Yaniv Efraim
cfc0571c1a feat: better timeout stack trace (#2843)
fixes #2653
2018-07-05 02:39:09 +03:00
Joel Einbinder
22fa00a7b3 fix: wait for the chromeProcess to exit, not close (#2838) 2018-07-05 02:36:49 +03:00
Andrey Lushnikov
fb7c4e0984
docs(readme): minor nits (#2827) 2018-06-29 21:35:52 -07:00
Andrey Lushnikov
5955affab0
fix(page.click): teach puppeteer click wrapped links (#2822)
This patch teaches Puppeteer to click elements that are
part of inline layout and that wrap on multiple lines.

Fixes #2798.
2018-06-29 12:03:02 -07:00
Andrey Lushnikov
59e7f7ebb6
feat(chromium): roll Chromium to r571375 (#2817)
This roll includes:
- https://crrev.com/571235 - DevTools: introduce DOM.getContentQuads protocol method

References #2798.
2018-06-29 10:00:42 -07:00
Kaveet Laxmidas
acb89dddba docs(api.md): add note on page.pdf() color rendering behavior (#2821)
Adds guidance for producing accurate colors in PDF output. page.pdf() can produce unexpected document colors unless forced to render exact colors.

Fixes #2685
2018-06-29 09:57:03 -07:00
Andrey Lushnikov
871b204fd1
refactor: simplify EmulationManager (#2816)
EmualationManager used to be injecting touch hooks to properly
support touch emulation.

However, these are no longer necessary, since https://crbug.com/133915
is long fixed.
2018-06-28 18:48:44 -07:00
Andrey Lushnikov
c4acc63775
feat(chromium): roll Chromium to r571040 (#2814)
This roll includes:
- https://crrev.com/570566 - DevTools: teach DOM.getBoxModel to work with SVG nodes

Fixes #1247.
2018-06-28 13:22:52 -07:00
Andrey Lushnikov
d6741eca08
test: add test that verifies pptr works with SVG nodes (#2805)
References #1247
2018-06-26 18:03:00 -07:00
Andrey Lushnikov
f55d005cbe
fix(page): teach page.click() to click partially offscreen buttons (#2806)
Originally, we use `Element.scrollIntoViewIfNeeded` to make sure
button is on screen before trying to click it.

However, `Element.scrollIntoViewIfNeeded` doesn't work in certain
scenarios, e.g. when element is partially visible and horizontal
scrolling is required to make it fully visible.

This patch polyfills `element.scrollIntoViewIfNeeded` using
IntersectionObserver and `Element.scrollIntoView`.

Fixes #2804.
2018-06-26 18:00:55 -07:00
Andrey Lushnikov
6ca43cf761
docs(api.md): clarify docs about waitForNavigation (#2788) 2018-06-26 13:42:50 -07:00
Yaniv Efraim
aae73f5fd7 feat(worker): implement pageerror event from a worker (#2795)
Fixes #2761
2018-06-25 15:10:36 -07:00
Vse Mozhet Byt
811415bc8c docs(api.md): fix a typo (#2789) 2018-06-21 10:37:07 -07:00
Vse Mozhet Byt
3b20839ab5 docs(api.md): update note about page.goto() returned value (#2787)
Fixes: #2765
2018-06-21 10:20:39 -07:00
Andrey Lushnikov
a460114945
test: fix appveyour flakiness (#2779)
Crashpad sometimes prevents us from removing a folder in tests.

References #2778.
2018-06-20 13:52:36 -07:00
Andrey Lushnikov
4178b989d2
test: add test that breaks subsequent page.goto (#2775)
References #2764.
2018-06-20 13:51:47 -07:00
Andrey Lushnikov
dcae6bcff4
feat(chromium): roll Chromium to r568432 (#2769)
This roll includes:
- https://crrev.com/568341 - DevTools: force-create execution contexts for mixed content iframes

Fixes #2709.
2018-06-19 13:46:08 -07:00
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