Commit Graph

389 Commits

Author SHA1 Message Date
Pavel Feldman
19cac9a0c1 test: rebaseline wk/mac network tests 2019-12-11 19:32:07 -08:00
Pavel Feldman
7c7c13e89d fix(webkit): fix a couple of navigation tests (#217) 2019-12-11 17:46:26 -08:00
Pavel Feldman
6440323003 fix(webkit): wait for main response on subresource-free goto (#216) 2019-12-11 16:19:37 -08:00
Pavel Feldman
4824a25cc6
fix(csp): fix some of the csp tests (#211) 2019-12-11 13:51:03 -08:00
Dmitry Gozman
b70eebc4b2 chore: merge PageDelegate, FrameDelegate and ScreenshotterDelegate (#213) 2019-12-11 13:36:41 -07:00
Yury Semikhatsky
ce21019c7d fix(webkit): make sure each message is dispatch in separate task (#212) 2019-12-11 12:06:11 -08:00
Pavel Feldman
357e175964 fix(webkit): fullPage screenshot w/o viewport (#210) 2019-12-11 11:26:34 -08:00
Dmitry Gozman
58336d3eb9 chore: get rid of <Browser> templating (#209) 2019-12-11 07:18:43 -08:00
Dmitry Gozman
57acdfd860 chore: reuse LifecycleWatcher between browsers (#208) 2019-12-11 07:17:32 -08:00
Pavel Feldman
e42e361d20
feat(webkit): use new bypass csp method (#207) 2019-12-10 19:26:13 -08:00
Pavel
3146d47de8 fix(compile): include debugError in webkit/FrameManager 2019-12-10 16:34:06 -08:00
Pavel Feldman
8c548ed9e9
feat(webkit): implement page.exposeFunction (#195) 2019-12-10 15:17:42 -08:00
Dmitry Gozman
5ffb710d7d
chore: reuse BrowserContext across browsers (#201) 2019-12-10 15:13:56 -08:00
Joel Einbinder
0af3b9dfc8 feat(webkit): page.on('popup') (#202) 2019-12-10 15:07:00 -08:00
Yury Semikhatsky
e8ec7e5118
feat(webkit): pause and configure provisional pages on creation (#200) 2019-12-10 15:34:36 -07:00
Andrey Lushnikov
329b34e894
feat: implement mac keyboard (#197)
This list contains all of the default keyboard shortcuts for macos, and the Objective-C selector that they trigger on the [NSStandardKeyBindingResponding](https://developer.apple.com/documentation/appkit/nsstandardkeybindingresponding/3005237-moveleft?language=objc). We need these for basic keyboard functionality like ArrowUp and ArrowDown to work on WebKit for mac. For other browsers on mac, the same list can be used to enable better mac keyboard emulation.

The list was made by constructing NSEvents on a mac and seeing what selectors they triggered on an NSTextView. The conversion from NSEvents to DOM codes was done partially by hand as the code that does this conversion lives across many files in WebKit. There may be some errors or missing commands, but in general this should be a more faithful mac keyboard emulation than what we do in Chromium currently.

Notably absent from the list are Cut, Copy, Paste, Paste Special, Undo, and Redo. They are handled in a slightly different way.
2019-12-10 13:22:01 -08:00
Yury Semikhatsky
c9bc103a00 chore(webkit): remove url from Connection (#199) 2019-12-10 13:11:55 -08:00
Dmitry Gozman
f1f9dc166b
chore: remove unneeded files, reuse events between browsers, no implicit any (#191) 2019-12-10 11:15:14 -08:00
Pavel Feldman
44d6f608ef feat(webkit): use webkit worlds (#194) 2019-12-09 23:24:12 -08:00
Dmitry Gozman
b4c89ca0f9
chore: unify frame lifecycle events between browsers (#172) 2019-12-09 16:34:42 -08:00
Dmitry Gozman
e5a85e4e67
chore(webkit): migrate to common Page (#189) 2019-12-09 15:45:32 -08:00
Dmitry Gozman
640646b794
chore(firefox): migrate to common Page (#188) 2019-12-09 14:53:17 -08:00
Joel Einbinder
e3f34bd69a
fix(fill): throw when the element isn't fillable (#160)
An element is fillable if its:
- In dom
- Not display:none or visibility:hidden
- textarea or input or contenteditable

if textarea or input it must also be
- not readOnly
- not disabled

#133
2019-12-09 14:51:19 -08:00
Yury Semikhatsky
37540179de chore(webkit): pass session to Target constructor (#187) 2019-12-09 14:41:20 -08:00
Dmitry Gozman
c323a3e50b chore(chromium): move Page to common, implement PageDelegate (#184) 2019-12-09 14:08:20 -07:00
Yury Semikhatsky
f9d5a18d05 chore(webkit): remove unused fields from Target (#183) 2019-12-09 12:13:19 -08:00
Dmitry Gozman
88aea0a886
fix: fix races in didClose and didDisconnect across browsers (#182)
Also merge initialize and swapSessionOnNavigation in webkit.
2019-12-09 10:16:30 -08:00
Dmitry Gozman
b3817aab2a chore(webkit): remove most session usages from Page (#181)
These are moved to FrameManager, so that we can reuse Page between browsers.
2019-12-09 10:48:54 -07:00
Pavel Feldman
f5cd742b79
test: rebaseline some click tests (#179) 2019-12-08 17:17:49 -08:00
Dmitry Gozman
f38ab5d80f chore: reuse BrowserFetcher between browsers (#177) 2019-12-08 13:29:03 -08:00
Dmitry Gozman
0d0f6b7d03 fix(webkit): improve target swap handling (#175)
- Fix "page closed twice" race.
- Do not fire 'disconnected' on swapped out sessions.
- Use a different error for commands sent to swapped out targets.
  This allows callers to detect this situation and retry/throw/catch.
- Restore more state on swap: extra http headers, user agent, emulated media.
2019-12-07 16:58:23 -08:00
Yury Semikhatsky
02e29219fd fix(webkit): make go back/forard return null on error (#171) 2019-12-06 16:38:23 -08:00
Dmitry Gozman
5ab0faab93 chore: remove most usages of session from firefox Page (#169) 2019-12-06 17:34:27 -07:00
Pavel
0884e29695 chore: rearrange test spec files 2019-12-06 16:15:47 -08:00
Pavel
b45ea22660 test: fix element.handle nested frames 2019-12-06 15:11:14 -08:00
Pavel
bcb62de4b2 fix(test): make click tests pass everywhere 2019-12-06 14:48:41 -08:00
Dmitry Gozman
14f078308d
chore: remove some usage of client from Page (#163)
This brings us closer to reusing Page between browsers.
2019-12-06 13:36:47 -08:00
Pavel
349ce22565 lint: follow up with lints 2019-12-06 12:04:11 -08:00
Pavel Feldman
bb1888c86e feat(screenshots): make them work everywhere (#164) 2019-12-06 11:33:24 -08:00
Joel Einbinder
39b22b41c5
feat: make JSHandle generic (#140)
This makes it so that JSHandles and ElementHandles are aware of what types they point to. As a fun bonus, `$eval('input')` knows its going to get an HTMLInputElement.

Most of this patch is casting things where previously we just assumed ElementHandles held the right kind of node. This gets us closer to being able to turn on `noImplicityAny` as well.

#6
2019-12-05 16:26:09 -08:00
Dmitry Gozman
e992c7fa7d chore: unify screenshot handling between browsers, introduce Screenshotter everywhere (#156) 2019-12-05 14:48:39 -08:00
Yury Semikhatsky
b84d3c6cbe chore: do not accumulate protocol messages for debugging (#150) 2019-12-05 14:13:17 -08:00
Dmitry Gozman
51ca756efe
chore: encapsulate target business in Browser class (#151)
Page and BrowserContext are now closer to be reused between browsers.
2019-12-05 14:11:48 -08:00
Pavel Feldman
2d77760f01
chore: move tests around after targets extraction (#153) 2019-12-05 13:15:17 -08:00
Joel Einbinder
4478c653fd fix(install): generate new protocol.d.ts when browsers are downloaded (#149) 2019-12-05 12:21:55 -07:00
Dmitry Gozman
d4f0084f67
chore: move element coordinates handling to common (#139)
Browser now implement boundingBox(), contentQuads() and layoutViewport().
2019-12-05 09:54:50 -08:00
Dmitry Gozman
3f554b3273 fix: handle failures of adoptElementHandle (#134)
There is no way to trigger this issue through the api just yet, but there will be
once we support handles as selectors.
2019-12-05 09:45:36 -07:00
Yury Semikhatsky
25af050bd4 feat(webkit): add page back/forward commands (#144) 2019-12-05 08:32:52 -08:00
Yury Semikhatsky
b5af3cac11 fix(install): print version of the browser being downloaded (#146) 2019-12-05 08:30:58 -08:00
Joel Einbinder
9f603c49fb
feat: easy download (#56) 2019-12-04 17:58:38 -08:00
Pavel Feldman
e1c4eaae28
chore: make targets chromium feature (#137) 2019-12-04 16:12:43 -08:00
Yury Semikhatsky
3305363f2a
fix(webkit): pass --headless only on Mac (#135) 2019-12-04 17:08:35 -07:00
Dmitry Gozman
fc5898892b
feat(selectors): support optional "visible" property in all selectors (#129) 2019-12-04 13:11:10 -08:00
Joel Einbinder
492f539310
chore(firefox): lint against the juggler protocol (#94) 2019-12-04 10:33:29 -08:00
Pavel Feldman
01b321d014
feat(webkit): implement headless on Mac (#128) 2019-12-03 14:10:01 -08:00
Dmitry Gozman
e124d44a55 chore: rework wait task to accept arbitrary task on dom world (#126) 2019-12-03 11:51:41 -07:00
Yury Semikhatsky
ba54ad46b3 feat(page): add Page.setJavaScriptEnabled for WebKit (#125) 2019-12-03 10:47:02 -08:00
Dmitry Gozman
6b3c2632e7
feat(selectors): support various selectors in waitFor methods (#122) 2019-12-03 10:43:13 -08:00
Dmitry Gozman
bb1433a143
feat(selectors): support various kinds of selectors (#118)
This adds support for generic "engine=body [>> engine=body]*" selector syntax
and auto-detects simple css or xpath.
2019-12-02 17:33:44 -08:00
Pavel Feldman
505c9e3660 test: uncomment more cookies tests 2019-12-02 17:02:33 -08:00
Pavel Feldman
8989da6c16 fix(cookies): follow up to make all platform tests pass 2019-12-02 16:48:38 -08:00
Pavel Feldman
040f93faa2 feat(cookies): implement cookies across the board (#121) 2019-12-02 16:36:46 -08:00
Yury Semikhatsky
2ca2a4cb18 feat(launcher): throw on browser launch failure, default args (#119) 2019-12-02 16:17:53 -08:00
Dmitry Gozman
ffaf7326ab
chore: put remoteObject directly on JSHandle (#113) 2019-12-02 13:12:28 -08:00
Dmitry Gozman
113ffd6808
chore: reuse ConsoleMessage between browsers (#116) 2019-12-02 13:01:01 -08:00
Dmitry Gozman
b6c892842b
feat(screenshot): multiple element screenshots are now taken sequentially (#114)
This makes multiple element screenshots to not fight for the page viewport
by putting viewport manipulation under screenshot task queue.

Drive-by: encapsulated all screenshot logic in Screenshotter.
2019-12-02 10:53:58 -08:00
Dmitry Gozman
76ab83f581 chore: reuse Dialog between browsers (#115) 2019-12-02 11:53:23 -07:00
Dmitry Gozman
8efd258e40
chore: encapsulate dom-related logic to DOMWorld, part 1 (#112) 2019-11-28 12:50:52 -08:00
Pavel Feldman
336338c97e
test: fix webkit tests (#111) 2019-11-27 16:23:46 -08:00
Dmitry Gozman
961556a596
chore: cleanup multiple definitions and types (#109) 2019-11-27 16:03:51 -08:00
Dmitry Gozman
c3393039b0
chore: reuse ElementHandle between browsers (#108) 2019-11-27 16:02:31 -08:00
Dmitry Gozman
b596f36bad chore: separate common part of ElementHandle from chromium-specific (#106) 2019-11-27 14:26:46 -08:00
Pavel Feldman
56b4f009ac chore: refactor the file chooser api (#107) 2019-11-27 14:26:30 -08:00
Pavel Feldman
cf9c4d153a feat(webkit): implement file chooser interception (frontend) (#98) 2019-11-27 13:50:24 -08:00
Pavel Feldman
1a1732407f chore: follow up to the execution context changes (#104) 2019-11-27 13:31:13 -08:00
Dmitry Gozman
b2c31b7317
chore: reuse network Request and Response between browsers (#101) 2019-11-27 12:44:12 -08:00
Dmitry Gozman
490db5bc18
chore: reuse JSHandle between browsers (#103) 2019-11-27 12:41:26 -08:00
Dmitry Gozman
06ba0f7a7f
chore: reuse ExecutionContext between browsers (#102) 2019-11-27 12:39:53 -08:00
Dmitry Gozman
dfc5592910
chore: reuse Frame between browsers (#100) 2019-11-27 12:38:26 -08:00
Joel Einbinder
49f8963bf1
feat(webkit): dialogs (#75) 2019-11-27 12:24:52 -08:00
Pavel Feldman
72b1bb783b
feat(chromium): roll chromium to r719491, lint, test (#99) 2019-11-26 22:53:34 -08:00
Dmitry Gozman
35c27bfa45 chore: remove Frame dependecies on the chromium-specific things (#95) 2019-11-26 16:19:43 -08:00
Dmitry Gozman
c48b39345a chore: merge DOMWorld into Frame (#93)
This allows us to reuse Frame between browsers.
2019-11-26 15:37:25 -08:00
Pavel Feldman
cc41377fe2 chore: move emulateTimeZone and setGeolocation to Overrides (#92) 2019-11-26 15:13:49 -08:00
Pavel Feldman
c7a07ea2a8 chore: move more unsupported apis to interception (#91) 2019-11-26 15:01:27 -08:00
Pavel Feldman
0494c4c04e
chore: export FileChooser api for the dashboard (#90) 2019-11-26 14:31:09 -08:00
Pavel Feldman
64d3e83ddf
chrome(filechooser): align file chooser implementations (#88) 2019-11-26 14:29:21 -08:00
Pavel Feldman
a4e24c718b
feat(cookies): move cookie management to BrowserContext (#82) 2019-11-26 11:23:13 -08:00
Dmitry Gozman
3decf1f996
chore: move waitFor methods from DOMWorld to Frame (#87)
This almost removes the DOMWorld, so we can unify them across the browsers.
2019-11-26 11:16:20 -08:00
Pavel Feldman
2eb653740a feat(headful): remove bringToFront (#84) 2019-11-26 11:00:54 -08:00
Dmitry Gozman
6e78e12d90
chore: move meaningful methods with a single callsite from DOMWorld to Frame (#68) 2019-11-26 08:57:53 -08:00
Pavel Feldman
991f4a9072
docs: fix the docs validator (#86) 2019-11-26 08:52:47 -08:00
Pavel Feldman
66d3dd8626
lint: fixes (#85) 2019-11-26 08:19:02 -08:00
Dmitry Gozman
0db3101013 chore: reuse waitForSelectorOrXPath between browsers (#81) 2019-11-26 07:55:34 -08:00
Dmitry Gozman
cefebb3938 chore: use types for eval functions in webkit (#79) 2019-11-26 07:53:48 -08:00
Dmitry Gozman
432116ba80 chore: move Mouse to common input with RawMouseImpl per vendor (#73) 2019-11-26 07:52:55 -08:00
Dmitry Gozman
cc9b58878b
chore: reuse WaitTask between browsers (#67) 2019-11-25 20:28:34 -08:00
Dmitry Gozman
72b252e5e9
chore: make WaitTask not depend on DOMWorld (#66)
This opens up opportunity for reuse.
2019-11-25 16:55:03 -08:00
Dmitry Gozman
371394ff2f
chore: use eval types in firefox (#77) 2019-11-25 16:42:37 -08:00
Pavel Feldman
a1d71d0de7 feat(csp): support bypass csp on ff (#74) 2019-11-25 15:26:03 -08:00
Dmitry Gozman
038e24c089
chore: common types for evaluate functions (#72) 2019-11-25 15:06:52 -08:00
Pavel Feldman
2e581f1625 feat(emulate): implement emulateMedia color scheme in FF (#71) 2019-11-25 15:00:04 -08:00
Pavel Feldman
eaa5e93b8b feat(filechooser): supported file chooser in FF (#70) 2019-11-25 13:56:39 -08:00
Dmitry Gozman
d5ad3960c3 chore: move Keyboard to common, with RawKeyboardImpl per vendor (#69) 2019-11-25 11:19:20 -08:00
Dmitry Gozman
025c1fc7bc feat(engines): introduce xpath engine, switch $x to use it (#64) 2019-11-22 17:27:09 -08:00
Pavel Feldman
3190044c00 feat(firefox): implemented *.fill (#63) 2019-11-22 16:55:35 -08:00
Pavel Feldman
c4c8d498bd chore: reuse input code across vendors (#62) 2019-11-22 16:47:50 -08:00
Yury Semikhatsky
ef847b1941 fix(page): support multiple bootstrap scripts (#59) 2019-11-22 16:25:36 -08:00
Dmitry Gozman
7c69f8c457 feat(engines): move querySelectorAll to css engine (#61) 2019-11-22 16:21:30 -08:00
Dmitry Gozman
a9cd015fdb
feat(engines): introduce a css selector engine and a way to query it (#50) 2019-11-22 15:36:17 -08:00
Pavel Feldman
ef464e447f
feat(input): dblclick/trippleclick feature parity (#60) 2019-11-22 14:46:34 -08:00
Yury Semikhatsky
37a9c17d3e fix (#58) 2019-11-22 14:04:04 -08:00
Yury Semikhatsky
ac01262c88
feat(page): support Page.evaluateOnNewDocument for WebKit (#55) 2019-11-22 13:14:07 -08:00
Dmitry Gozman
e04910501b
feat(select): use ElementHandle instead of 'id=foo' when choosing options (#54) 2019-11-22 11:54:49 -08:00
Pavel Feldman
b66b005b1f chore: move wsEndpoint and browser target APIs to features/ (#52) 2019-11-22 11:25:53 -08:00
Pavel Feldman
508c1960dd
chore: unify emulateMedia APIs (#53) 2019-11-22 11:24:56 -08:00
Pavel Feldman
c26166203e chore: remove connection / session redundancy (#51) 2019-11-22 10:05:32 -08:00
Dmitry Gozman
7783400156 feat(select): allow to select options by value/label/id/index (#46) 2019-11-21 21:19:21 -08:00
Joel Einbinder
6fcb4d2f30 feat: remove all environment variables and references to puppeteer-core (#47)
* feat: remove all environment variables and references to puppeteer-core

* fixup install
2019-11-21 21:17:23 -08:00
Pavel Feldman
f223a98e3d
feat(chromium): roll Chromium to r717627 (#49) 2019-11-21 21:16:00 -08:00
Pavel Feldman
1e91257d6e chore: group chromium-specific features (#45) 2019-11-21 16:54:10 -08:00
Dmitry Gozman
57bbd81824
chore: introduce injected source lazily evaluated by execution context (#42) 2019-11-21 14:43:30 -08:00
Pavel Feldman
e3dcac1d46
chore: move interception API into features/ (#43) 2019-11-21 14:41:38 -08:00
Joel Einbinder
92a6500b23 feat(webkit): page.fill and friends (#40) 2019-11-20 16:57:37 -08:00
Pavel Feldman
e869b12f46 chore: remove touchscreen API (#41) 2019-11-20 16:55:02 -08:00
Joel Einbinder
206cf7b83f feat(webkit): pass all keyboard tests (#39)
Add `keyboard.sendCharacter` and fixes up all of the keyboard tests.

Drive-by to actually allow selectively installing browsers.
2019-11-20 16:39:12 -08:00
Pavel Feldman
f9a89eb313 chore: split vendor APIs (#38) 2019-11-20 15:16:57 -08:00
Pavel Feldman
1fe1e150f3 chore: move geolocation into features/ (#37) 2019-11-20 14:18:05 -08:00
Pavel Feldman
cf97e2c140 chore: remove handle.boxModel API (#36) 2019-11-20 14:15:19 -08:00
Pavel Feldman
653b4b9df3 chore: remove SecurityDetails API (#35) 2019-11-20 13:53:27 -08:00
Pavel Feldman
a216063829 chore: remove Request.fromCache/ServiceWorker APIs (#34) 2019-11-20 11:57:21 -08:00
Pavel Feldman
76eb289f54
chore: move permissions API into features/ (#33)
- drive-by accessibility spec moved to a shared folder
2019-11-20 09:40:26 -08:00
Pavel Feldman
48a78b2c8a
chore: remove page.queryObjects API (#31) 2019-11-20 09:28:40 -08:00
Pavel Feldman
35e6d10517
chore: remove page.metrics API (#30) 2019-11-20 09:28:22 -08:00
Pavel Feldman
83ed65dce8 chore: move workers into features/ (#29) 2019-11-19 17:32:43 -08:00
Pavel Feldman
85035fedea chore: move pdf, tracing, coverage, a11y into featuress/ (#28) 2019-11-19 16:29:28 -08:00
Pavel Feldman
60f332d01b
doc: fix doc linter (#2) 2019-11-19 13:59:52 -08:00
Pavel Feldman
4b13b5e3c6 chore: remove page.pdf API (#25) 2019-11-19 13:50:23 -08:00
Pavel Feldman
9ba375c063 Initial commit 2019-11-19 10:58:15 -08:00