git.iko.soy/rowtype-yoga/purescript-playwright
on main help sign in
Add `close`, fix incorrect use of `Options`.
5e5459fVladimir Kalnitsky
.gitignore+9−8
@@ -1,8 +1,9 @@
1−# Dependencies
2−.psci_modules
3−bower_components
1+/bower_components/
4−node_modules
2+/node_modules/
5−
3+/.pulp-cache/
6−# Generated files
7−.psci
8−output
4+/output/
5+/generated-docs/
6+/.psc-package/
7+/.psc*
8+/.purs*
9+/.psa*
spago.dhall+8−1
@@ -1,6 +1,13 @@
1{ name = "playwright"
1{ name = "playwright"
2, dependencies =
2, dependencies =
3− [ "console", "effect", "prelude", "psci-support", "aff-promise", "options" ]
3+ [ "console"
4+ , "effect"
5+ , "prelude"
6+ , "psci-support"
7+ , "aff-promise"
8+ , "options"
9+ , "test-unit"
10+ ]
4, packages = ./packages.dhall
11, packages = ./packages.dhall
5, sources = [ "src/**/*.purs", "test/**/*.purs" ]
12, sources = [ "src/**/*.purs", "test/**/*.purs" ]
6}
13}
src/Playwright.js+6
@@ -12,3 +12,9 @@ exports._launch = function (browser) {
12 };
12 };
13 };
13 };
14};
14};
15+
16+exports._close = function (browser) {
17+ return function () {
18+ return browser.close();
19+ };
20+};
src/Playwright.purs+10−3
@@ -28,13 +28,15 @@ module Playwright
28 , env
28 , env
29 , devtools
29 , devtools
30 , slowMo
30 , slowMo
31+
32+ , close
31 )
33 )
32where
34where
33
35
34import Prelude
36import Prelude
35import Effect (Effect)
37import Effect (Effect)
36import Control.Promise (Promise, toAffE)
38import Control.Promise (Promise, toAffE)
37−import Data.Options (Option, Options, opt)
39+import Data.Options (Option, Options, opt, options)
38import Effect.Aff (Aff)
40import Effect.Aff (Aff)
39import Foreign (Foreign)
41import Foreign (Foreign)
40import Foreign.Object (Object)
42import Foreign.Object (Object)
@@ -46,10 +48,10 @@ foreign import firefox :: BrowserType
46foreign import chromium :: BrowserType
48foreign import chromium :: BrowserType
47foreign import webkit :: BrowserType
49foreign import webkit :: BrowserType
48
50
49−foreign import _launch :: BrowserType -> Options LaunchOptions -> Effect (Promise Browser)
51+foreign import _launch :: BrowserType -> Foreign -> Effect (Promise Browser)
50
52
51launch :: BrowserType -> Options LaunchOptions -> Aff Browser
53launch :: BrowserType -> Options LaunchOptions -> Aff Browser
52−launch bt = toAffE <<< _launch bt
54+launch bt opts = toAffE $ _launch bt (options opts)
53
55
54foreign import data LaunchOptions :: Type
56foreign import data LaunchOptions :: Type
55
57
@@ -111,3 +113,8 @@ devtools = opt "devtools"
111
113
112slowMo :: Option LaunchOptions Number
114slowMo :: Option LaunchOptions Number
113slowMo = opt "slowMo"
115slowMo = opt "slowMo"
116+
117+close :: Browser -> Aff Unit
118+close = toAffE <<< _close
119+
120+foreign import _close :: Browser -> Effect (Promise Unit)
test/Main.purs+14−2
@@ -3,7 +3,19 @@ module Test.Main where
3import Prelude
3import Prelude
4import Effect (Effect)
4import Effect (Effect)
5import Effect.Console (log)
5import Effect.Console (log)
6+import Test.Unit.Assert as Assert
7+import Playwright
8+import Data.Options
9+import Test.Unit
10+import Test.Unit.Main
6
11
7main :: Effect Unit
12main :: Effect Unit
8−main = do
13+main = runTest do
9− log "You should add some tests."
14+ suite "browser" do
15+ test "launch" do
16+ browser <- launch firefox $
17+ headless := false <>
18+ slowMo := 10000.0
19+
20+ -- close browser
21+ pure unit