Граф коммитов

374 Коммитов

Автор SHA1 Сообщение Дата
Pavel Feldman 1ee657823e
feat(viewport): update defaults to 1280x720, fix Firefox (#1038) 2020-02-18 09:16:32 -08:00
Józsi 010c27410a
Docs: fix return type of launchPersistent (#1047)
Docs fix: the return type of `browserType.launchPersistent` is [BrowserContext](https://github.com/microsoft/playwright/blob/master/src/server/browserType.ts#L46), not ` BrowserServer`.
2020-02-17 14:35:11 -08:00
Daniel Imms 8071225d1e
Add xterm.js to showcase (#1034) 2020-02-15 10:07:41 -08:00
Joel Einbinder 8cfdeb99bd
chore: mark v0.11.1-post (#1027) 2020-02-14 19:23:50 -08:00
Joel Einbinder 2037e01b06
chore: mark v0.11.1 (#1025) 2020-02-14 19:13:08 -08:00
Arjun Attam bb8d435c5b
chore(docs): add community showcase (#1018) 2020-02-14 16:54:14 -08:00
Dmitry Gozman dbb45d443a
Revert "feat(click): waitForInteractable option, defaults to true (#934)" (#1013)
Reason: new tests are flaky on all bots.
2020-02-14 13:05:23 -08:00
Dmitry Gozman 9413351d3f
feat(click): waitForInteractable option, defaults to true (#934) 2020-02-14 11:55:34 -08:00
Andrey Lushnikov 39c580a9b1
chore: bump version to 0.11.0-post (#1001) 2020-02-13 19:10:03 -08:00
Andrey Lushnikov f9887e073d
chore: mark version 0.11.0 (#1000) 2020-02-13 18:56:54 -08:00
Pavel Feldman cd4e9da807
feat(coverage): export raw v8 coverage (#976)
Fixes #955
2020-02-13 17:39:14 -08:00
Dmitry Gozman 25022e4685
feat(api): introduce default timeouts on BrowserContext (#992) 2020-02-13 14:18:18 -08:00
Pavel Feldman c15534ff01
fix(locale): document locale parameter (#990) 2020-02-13 13:37:59 -08:00
Andrey Lushnikov aa60a7cebd docs(api.md): fix nit 2020-02-12 16:18:05 -08:00
Andrey Lushnikov 7ce49c2835
chore: remove WebSocket implementation (#961)
WebSocket implementation currently is very incomplete, lacking
support in WebKit-Win and Firefox.
2020-02-12 15:29:06 -08:00
Andrey Lushnikov b0c0598510
fix(api): small-case all api event names (#959) 2020-02-12 14:59:54 -08:00
Pavel Feldman 53237009ad
feat($wait): make $wait a shortcut for waitForSelector (#932) 2020-02-11 14:51:09 -08:00
Pavel Feldman aae5fca237
feat(api): make browser.newPage own the created context (#930) 2020-02-11 12:06:58 -08:00
Andrey Lushnikov ad9d6cc31f
feat: introduce browserType.downloadBrowserIfNeeded() (#834)
Fixes #823
2020-02-11 11:33:48 -08:00
Pavel Feldman 72b9cf010e
feat(context): introduce BrowserContext close event (#918) 2020-02-11 10:27:19 -08:00
Pavel Feldman 84f5700294
feat(api): rename browserContext() to context() in the apis, remove url from newPage (#906) 2020-02-10 10:41:45 -08:00
Dmitry Gozman fee83b17c9
fix(api): page.viewport -> page.viewportSize (#878)
We now only allow to resize the page, leaving isMobile and deviceScaleFactor as browser context options.
2020-02-06 19:02:55 -08:00
Joel Einbinder 06a7d7e3e3
docs(api.md): missing arguments for functions in page.route (#880) 2020-02-06 17:14:37 -08:00
aesyondu 75340f34ad
chore: Note that (code) coverage is only available for chromium (#867) 2020-02-06 15:51:03 -08:00
Pavel Feldman a547aa7984
feat(connect): allow multiple webkit connections over web socket (#863) 2020-02-06 12:41:43 -08:00
Andrey Lushnikov a72784a677
fix(test): properly clean input field (#860) 2020-02-05 18:11:33 -08:00
Dmitry Gozman 6318ba6e4a
feat(frame): introduce frame.frameElement (#856)
Fixes #839.
2020-02-05 17:20:23 -08:00
Andrey Lushnikov 4aa155ede1 docs(api.md): fix link 2020-02-05 16:53:02 -08:00
Pavel Feldman 55b6fe241e
feat(launch): introduce client, server & persistent launch modes (3) (#854) 2020-02-05 16:36:36 -08:00
Pavel Feldman a2ab645e63
feat(launch): introduce client, server & persistent launch modes (2) (#840) 2020-02-05 12:41:55 -08:00
Andrey Lushnikov 0f1a42a5d3 docs(readme): fix API link to always point to last released API 2020-02-05 12:05:36 -08:00
Pavel Feldman 2e0f3e3e01
docs: split docs to npm version and latest (#846) 2020-02-05 07:29:06 -08:00
Pavel Feldman 0518625dcc
feat(launch): introduce client, server & persistent launch modes (1) (#838) 2020-02-04 19:41:38 -08:00
Pavel Feldman e3e2da3186
feat(check): introduce page.check/uncheck (#826) 2020-02-04 14:39:10 -08:00
aesyondu 3ef23133a6
docs: fix dead link for element handle (#827) 2020-02-03 20:27:54 -08:00
Pavel Feldman 05d4746eb5
feat(selectors): temporarily remove zs engine (#824) 2020-02-03 16:14:37 -08:00
Pavel Feldman 8028fb052a
feat(route): migrate from request interception w/ events to page.route (#809) 2020-02-03 14:23:24 -08:00
Pavel Feldman 387b895929
browser(webkit): build more wk features (#807) 2020-02-02 14:21:50 -08:00
Darío Kondratiuk 0007439072
doc(api.md): Fix setPermissions link (#806) 2020-02-02 14:18:28 -08:00
Andrey Lushnikov fce3842011
chore: bump version to 0.10.0-post (#796) 2020-01-31 18:46:34 -08:00
Andrey Lushnikov 6a97216fff
chore: mark version 0.10.0 (#795) 2020-01-31 18:40:44 -08:00
Yury Semikhatsky 25f2a32af3
feat: add Page.opener() to the API (#790)
Fixes #783
2020-01-31 18:38:45 -08:00
Pavel Feldman ef1d2fb995
Revert "fix: move offline/cache/interception switches to BrowserContext (#748)" (#793)
This reverts commit 6faf74bc95.
2020-01-31 16:23:15 -08:00
Pavel Feldman 9a00e1d1f6
docs: update webkit.md features 2020-01-31 08:39:09 -08:00
Pavel Feldman 24c5df65c2
docs: add webkit build flags table (#777)
Fixes #565
2020-01-30 18:33:56 -08:00
Joel Einbinder e131fe0cee
fix(chromium): install libgbm (#773)
The new Chromium (#771) requires [`libgbm1`](https://packages.debian.org/sid/libgbm1) to be installed. Install it manually on the bots, and add it to troubleshooting.md.
2020-01-30 15:54:53 -08:00
Arjun Attam adc91c986c
chore(docs): fix broken link for downloaded browsers (#772) 2020-01-30 14:54:24 -08:00
Dmitry Gozman c9544b9b46
docs: add documentation for selector engines (#752) 2020-01-30 09:08:22 -08:00
Dmitry Gozman 0e6b44d337
feat(selectors): selectors.register accepts function (#753) 2020-01-29 15:13:43 -08:00
Yury Semikhatsky 6faf74bc95
fix: move offline/cache/interception switches to BrowserContext (#748) 2020-01-29 12:51:14 -08:00
Andrey Lushnikov ce7c8d74b5
feat: introduce BrowserType.name() (#732)
This helps a lot to produce nice logging:

```js
const { chromium, webkit } = require('playwright');

(async () => {
  for (const launcher of [chromium, webkit]) {
    console.log(`Testing on ${launcher.name()}`);
    const browser = await launcher.launch();
    // ...
    await browser.close();
  }
})();
```
2020-01-28 18:09:07 -08:00
Pavel Feldman 09e97afd22
feat(wk,ff): amend method & postData upon continue (#703)
Fixes #668
2020-01-28 14:29:46 -08:00
Darío Kondratiuk c35c65b393
docs(api.md) Rename page to context in newContext (#723)
A few more
2020-01-28 14:21:11 -08:00
Jamie 75f7ff3e05 docs(api.md) Fix USKeyboardLayout link (#719) 2020-01-28 14:04:14 -08:00
Darío Kondratiuk 9d34f28a40 docs(api.md) Rename page to context in newContext (#718)
The user agent is for the context not the page
2020-01-28 13:46:23 -08:00
Dmitry Gozman 2bef4aea03
feat(api): introduce selectors.register method (#701) 2020-01-28 11:20:34 -08:00
Vignesh Shanmugam 90d84e8879 docs(api): fix cdp session creation example (#709) 2020-01-28 07:54:41 -08:00
Pavel Feldman e2764306b3
doc: require webSocket:true for endpoint availability (#706) 2020-01-27 22:41:59 -08:00
Pavel Feldman 79ea30cfbc
docs: sort classes by use (#700) 2020-01-27 20:49:42 -08:00
Andrey Lushnikov bd726ee499 chore: bump version to v0.9.24-post 2020-01-27 17:26:23 -08:00
Andrey Lushnikov 3e40b4e9d3 chore: mark version 0.9.24 2020-01-27 17:23:53 -08:00
Andrey Lushnikov ee9c2b0c41 chore: bump version to v0.9.23-post 2020-01-27 14:08:14 -08:00
Andrey Lushnikov 03e2754dce chore: mark version 0.9.23 2020-01-27 13:47:02 -08:00
Andrey Lushnikov d7beaa7068
chore: bump version to 0.9.22-post (#684) 2020-01-27 13:31:43 -08:00
Andrey Lushnikov 0a7005e6e9
chore: mark version v0.9.22 (#682) 2020-01-27 13:28:23 -08:00
Pavel Feldman 5a5016fa7d docs: inline superclass toc into classes for convenience (#663) 2020-01-27 10:05:04 -08:00
Andrey Lushnikov c850430642 docs(api.md): remove browser downloads section (#675)
It quickly gets out of hand; let's remove it for now.
2020-01-27 09:48:50 -08:00
Andrey Lushnikov 9e0cf726ce docs(api.md): add missing docs (#664)
Follow-up to #641 that adds API entries.
2020-01-27 08:27:45 -08:00
Darío Kondratiuk 99414b0410 doc(page): Improve Page description (#665) 2020-01-27 08:26:45 -08:00
Pavel Feldman 4b849734af
docs: api.md typos
Fixes #661
2020-01-26 22:13:14 -08:00
Yury Semikhatsky b64604c1ea
chore: replace pptr with pw (#643) 2020-01-24 16:15:41 -08:00
Dmitry Gozman c453851217
api: introduce BrowserType with a single interface, update top-level api (#636) 2020-01-24 14:49:47 -08:00
Joel Einbinder ff877014cd
doc(troubleshooting): add note about lack of node 8 support (#623) 2020-01-24 09:04:54 -08:00
Dmitry Gozman 056fbbd53e
fix(api): make pipe connection the default, expose webSocket launch option (#562) 2020-01-23 17:45:31 -08:00
Joel Einbinder 3b2993ffe9 fix(docs): add back troubleshooting.md (#605)
This is mostly copied from Puppeteer's troubleshooting.md, with everything under a Chromium header and a few tweaks to make things make sense for Playwright.

We can add other browsers to this document once we figure out how to troubleshoot them.

Fixes #583
2020-01-23 15:54:09 -08:00
Joel Einbinder 4cf2180506 fix(docs): add docs for the websocket event (#612) 2020-01-23 15:26:38 -08:00
Dmitry Gozman ac2ba3cbd9
fix(api): BrowserServer -> BrowserApp, resuse it between browsers (#599) 2020-01-23 14:40:37 -08:00
Dmitry Gozman a5019ea69a
fix(api): remove remoteAddress from api (#601) 2020-01-23 12:13:58 -08:00
Dmitry Gozman fa2f321fdd
fix(api): remove BrowserServer.connect (#574) 2020-01-23 08:51:43 -08:00
Rajendra arora a6042e437a docs: removed semicolon from code doc as it not required (#580) 2020-01-23 08:50:37 -08:00
Joel Einbinder 7e8bce7911 chore: bump version to v0.9.21-post 2020-01-22 20:35:01 -08:00
Joel Einbinder 372a88fa30 chore: mark version v0.9.21 2020-01-22 20:32:32 -08:00
Joel Einbinder ef2286cbb5
chore: mark version v0.9.20 (#578) 2020-01-22 20:29:22 -08:00
Dmitry Gozman 3269358ac8
feat(webkit): covert pipe to websocket when asked (#570) 2020-01-22 17:42:10 -08:00
Andrey Lushnikov eab8f92ac8 docs: create a single top-level TOC for api.md (#561)
This patch:
- creates a single top-level TOC for api.md
- adds a TOC for each class in the api.md
2020-01-22 12:21:45 -08:00
Andrey Lushnikov 5c5faf35a9 chore: bump version to 0.9.19-post 2020-01-21 18:38:39 -08:00
Andrey Lushnikov 11abcee1d8 chore: mark version v0.9.19 2020-01-21 18:35:14 -08:00
Pavel 1c8b421260 chore: remove web sockets for now, mute failing wpe tests 2020-01-21 18:33:19 -08:00
Andrey Lushnikov de77fcca8a chore: bump version to 0.9.18-post 2020-01-21 17:41:45 -08:00
Joel Einbinder fd4a1906d7 chore: mark version 0.9.18 (#554) 2020-01-21 17:29:33 -08:00
Pavel Feldman 80c3b46a54
feat(websockets): implement support for ws on cr/wk (#542) 2020-01-21 11:48:48 -08:00
Dmitry Gozman 894e91bb68 fix(api): remove $x form the api, $$ works equally good (#544) 2020-01-20 11:30:22 -08:00
Pavel Feldman b0cae22c42 chore: nuke version svgs 2020-01-18 17:42:42 -08:00
Pavel Feldman def48e7da4 feat(chromium): roll to r733125 (#538) 2020-01-17 20:58:41 -08:00
Dmitry Gozman bb3f12245c feat(network): ignore favicon requests - these are too unpredictable (#533) 2020-01-17 17:14:39 -08:00
Dmitry Gozman 5b1aef4c20 api: remove BrowserFetcher from api, update docs (#487) 2020-01-14 10:07:26 -08:00
Dmitry Gozman b388722777
chore: update top-level api (#479)
```
require('playwright').chromium.launch(...)
window.playwrightweb.chromium.connect(...)
```
2020-01-13 17:36:46 -08:00
Pavel Feldman 61ca679cd9 chore: update browser badges 2020-01-13 15:20:30 -08:00
Pavel Feldman cead291ee1 chore: add browser badges 2020-01-13 14:45:24 -08:00
Pavel Feldman d19f10ef42
fix(geolocation): use values from context options (#463) 2020-01-13 13:32:44 -08:00
Yury Semikhatsky 778ab3deff chore: replace CHROME with CHROMIUM (#465) 2020-01-13 10:13:28 -08:00
Dmitry Gozman c77fd5e6cb
feat(pw-web): generate playwright/web.js which can be used in the browser (#455) 2020-01-10 16:03:10 -08:00
Dmitry Gozman 350452c31d
docs: unify XYZPlaywright api and docs (#443) 2020-01-09 14:49:22 -08:00
Dmitry Gozman f31ae5e2ed
docs: fix docs around server apis (#417) 2020-01-08 14:02:53 -08:00
Dmitry Gozman f15abadc9e chore: refactor CRBrowserServer (#408) 2020-01-07 14:13:55 -08:00
Pavel Feldman 55f2f5a7ec chore: move capabilities around for better docs (#407) 2020-01-07 13:57:37 -08:00
Pavel Feldman f75ac45c42
feat(workers): support workers in webkit (#400) 2020-01-07 12:59:01 -08:00
Dmitry Gozman 491eeeef7e feat(scrollIntoView): expose scrollIntoViewIfNeeded in api (#382)
This also replaces isIntersectingViewport with visibleRatio for more flexibility.
2020-01-06 13:16:56 -08:00
Pavel Feldman 38e79f12ec feat(media): remove media emulation from browser context options (#377) 2020-01-05 14:39:16 -08:00
Pavel Feldman 2d14d1ec1f feat(geo): enable geolocation overrides on WK (#361) 2020-01-03 10:14:50 -08:00
Pavel Feldman 6a04e1f026 feat(offline+auth): enable those in webkit, make them a part of the core API (#346) 2019-12-30 23:09:54 +01:00
Pavel Feldman 654fa22cc7 feat(webkit): enable request interception (#343) 2019-12-30 23:05:28 +01:00
Pavel Feldman 4638019902
feat(api): use good old inheritance instead of feature detection (#329) 2019-12-21 09:03:52 -08:00
Pavel Feldman f82039495c docs: sort classes alphabetically 2019-12-20 20:48:33 -08:00
Pavel Feldman 0ffc9fd4f5 docs: more iterations on the docs 2019-12-20 20:28:35 -08:00
Pavel Feldman 8f480a3987 docs: more docs update (#327) 2019-12-20 16:57:21 -08:00
Pavel d094c602a7 doc: even more documentation fixes 2019-12-20 15:32:03 -08:00
Pavel 2673ea90d9 doc: more documentation fixes 2019-12-20 15:26:18 -08:00
Pavel Feldman 9cfa404c87
feat: trim down url matching (#322) 2019-12-20 14:38:54 -08:00
Pavel Feldman ad22a46fde
feat: move permissions back into the context (#320) 2019-12-20 13:07:14 -08:00
Pavel Feldman 536c50db78 docs: started working on the api.md (2) 2019-12-19 20:14:19 -08:00
Pavel ae86a0be17 docs: started working on the api.md 2019-12-19 18:03:52 -08:00
Pavel Feldman d570fc7809
feat: further strip the browser api (#304) 2019-12-18 18:07:11 -08:00
Pavel Feldman 0e3328218d feat(context): remove the notion of incognito context (#299) 2019-12-18 16:44:02 -08:00
Dmitry Gozman 9afd35d3a1
feature(waitfor): waitFor visible or any by default (#284) 2019-12-18 14:28:16 -08:00
Pavel Feldman 6d0dfd0abf
feat(context): start moving overrides to the context level 2019-12-18 12:23:33 -08:00
Dmitry Gozman 03e2336d49 chore: various cleanup (#266) 2019-12-16 16:43:28 -08:00
Pavel Feldman df95b9ddb4 feat(waitFor): allow actions to wait for selector; make visible requirement default (#254) 2019-12-14 20:13:22 -07:00
Pavel Feldman 5377f7a2d8 lint: eslint fixes 2019-12-12 20:21:29 -08:00
Pavel Feldman c7cf4886ea api: s/createIncognitoBrowserContext/newContext/ 2019-12-12 20:14:50 -08:00
Andrey Lushnikov ee1f4784c6
feat(firefox): implement browser.firefox.wsEndpoint() (#233)
This lets us pass the fixtures test for browser shutdown.
2019-12-12 18:40:48 -08:00
Dmitry Gozman 59b0900321
feat(selectors): introduce zs selector engine (#214) 2019-12-12 09:02:37 -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
Dmitry Gozman e992c7fa7d chore: unify screenshot handling between browsers, introduce Screenshotter everywhere (#156) 2019-12-05 14:48:39 -08:00
Joel Einbinder 7af47b6fcb mark: v0.9.1-post 2019-12-05 21:27:17 +00:00
Joel Einbinder 79d3b5dffd fix: docs for 0.9.1 2019-12-05 21:11:29 +00:00
Joel Einbinder 4478c653fd fix(install): generate new protocol.d.ts when browsers are downloaded (#149) 2019-12-05 12:21:55 -07: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
Dmitry Gozman fc5898892b
feat(selectors): support optional "visible" property in all selectors (#129) 2019-12-04 13:11:10 -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
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
Pavel Feldman 56b4f009ac chore: refactor the file chooser api (#107) 2019-11-27 14:26:30 -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 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
Pavel Feldman 2eb653740a feat(headful): remove bringToFront (#84) 2019-11-26 11:00:54 -08:00
Pavel Feldman 991f4a9072
docs: fix the docs validator (#86) 2019-11-26 08:52:47 -08:00
Pavel Feldman 2e581f1625 feat(emulate): implement emulateMedia color scheme in FF (#71) 2019-11-25 15:00:04 -08:00
Pavel Feldman ef464e447f
feat(input): dblclick/trippleclick feature parity (#60) 2019-11-22 14:46:34 -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
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 1e91257d6e chore: group chromium-specific features (#45) 2019-11-21 16:54:10 -08:00
Pavel Feldman e3dcac1d46
chore: move interception API into features/ (#43) 2019-11-21 14:41:38 -08:00
Pavel Feldman e869b12f46 chore: remove touchscreen API (#41) 2019-11-20 16:55:02 -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 b4b7b6b96c
fix: build include paths (#32) 2019-11-20 09:10:41 -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