marionette-effectful-0.1.0.0: Effectful driver for Marionette
Copyright(c) 2026 Institute for Digital Autonomy
LicenseEUPL-1.2
MaintainerIDA
Safe HaskellTrustworthy
LanguageHaskell2010

Effectful.Marionette

Description

Marionette is Firefox's built-in remote-control protocol. It plays the same role as a WebDriver server, letting a test suite drive a real Firefox instance to navigate, find and interact with elements, execute scripts, and so on. In addition to WebDriver functionality, Marionette can also address Firefox's own chrome (its menus and toolbars) rather than just the content of a web page, and speaks its own lightweight length-prefixed JSON protocol directly over a TCP socket instead of HTTP.

This module lifts every command from the marionette library into the Eff monad as a Marionette effect. Run runMarionette to open the connection and discharge that effect for the duration of your action.

How to use Marionette

Starting Firefox and a session

Launch Firefox with the --marionette flag so that it listens for connections on port 2828.

Use runMarionette to connect to it and run a client program. Start a new session with newSession, and quit the session with deleteSession:

import Effectful
import Effectful.Marionette
import Effectful.Process.Typed
import System.Process.Typed (proc)

main :: IO ()
main =
  runEff . runTypedProcess $
    withProcessTerm_ (proc "firefox" ["--marionette", "--headless"]) \_process ->
      runMarionette $ do
        newSession
        quit

Finding and interacting with elements

Find elements by calling findElement with a Selector, then pass the resulting Element to other commands:

submitForm :: (HasCallStack, Marionette :> es) => Eff es ()
submitForm = do
  input <- findElement (ById "text-input")
  elementSendKeys input "hello, world"
  submit <- findElement (ByCSS "button[type=submit]")
  elementClick submit

Error handling

Catch command failures with catchError, for example to retry a command against a fallback element:

import Control.Monad.Error.Class (catchError)

clickFirstAvailable :: (HasCallStack, Marionette :> es) => Eff es ()
clickFirstAvailable =
  (elementClick =<< findElement (ById "primary-button"))
    `catchError` \_ -> elementClick =<< findElement (ById "fallback-button")
Synopsis

Documentation

print :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted print.

data Marionette (a :: Type -> Type) b Source #

Instances

Instances details
type DispatchOf Marionette Source # 
Instance details

Defined in Effectful.Marionette

newtype StaticRep Marionette Source # 
Instance details

Defined in Effectful.Marionette

acceptAlert :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted acceptAlert.

acceptConnections :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Bool -> Eff es () Source #

addCookie :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Cookie -> Eff es () Source #

Lifted addCookie.

back :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted back.

closeChromeWindow :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

closeWindow :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted closeWindow.

deleteAllCookies :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

deleteCookie :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Text -> Eff es () Source #

Lifted deleteCookie.

deleteSession :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

dismissAlert :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted dismissAlert.

elementClear :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Element -> Eff es () Source #

Lifted elementClear.

elementClick :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Element -> Eff es () Source #

Lifted elementClick.

elementSendKeys :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Element -> Text -> Eff es () Source #

executeAsyncScript :: forall (es :: [Effect]) f a. (HasCallStack, Marionette :> es, Foldable f, FromJSON a) => Text -> f Value -> Eff es (Maybe a) Source #

executeScript :: forall (es :: [Effect]) f a. (HasCallStack, Marionette :> es, Foldable f, FromJSON a) => Text -> f Value -> Eff es a Source #

findElement :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Selector -> Eff es Element Source #

Lifted findElement.

findElements :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Selector -> Eff es [Element] Source #

Lifted findElements.

forward :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted forward.

fullscreenWindow :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

getAlertText :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es Text Source #

Lifted getAlertText.

getContext :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es Context Source #

Lifted getContext.

getCookies :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es [Cookie] Source #

Lifted getCookies.

getCurrentURL :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es Text Source #

getElementRect :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Element -> Eff es Rect Source #

getElementText :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Element -> Eff es Text Source #

getPageSource :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es Text Source #

getShadowRoot :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Element -> Eff es Shadow Source #

getTimeouts :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es Timeouts Source #

Lifted getTimeouts.

getTitle :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es Text Source #

Lifted getTitle.

getWindowRect :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es Rect Source #

getWindowType :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es Text Source #

maximizeWindow :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

minimizeWindow :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

navigate :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Text -> Eff es () Source #

Lifted navigate.

newSession :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted newSession.

newTab :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es NewWindowResult Source #

Lifted newTab.

newWindow :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es NewWindowResult Source #

Lifted newWindow.

performActions :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

quit :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted quit.

refresh :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

Lifted refresh.

releaseActions :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

sendAlertText :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Text -> Eff es () Source #

setContext :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Context -> Eff es () Source #

Lifted setContext.

setPermission :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Eff es () Source #

setTimeouts :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Timeouts -> Eff es () Source #

Lifted setTimeouts.

setWindowRect :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Rect -> Eff es () Source #

switchToFrame :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => Frame -> Eff es () Source #

switchToWindow :: forall (es :: [Effect]). (HasCallStack, Marionette :> es) => WindowHandle -> Eff es () Source #

runMarionette :: forall (es :: [Effect]) a. IOE :> es => Eff (Marionette ': es) a -> Eff es a Source #

Connects to a running Firefox instance listening for Marionette connections (started with the --marionette command-line flag), and discharges the Marionette effect for the supplied action.

m :: forall (es' :: [Effect]) a. (HasCallStack, Marionette :> es') => Eff '[Concurrent, Reader (TQueue CommandWithCallback), Error Error, IOE] a -> Eff es' a Source #

data AccessibilityProperties #

Instances

Instances details
FromJSON AccessibilityProperties 
Instance details

Defined in Test.Marionette.AccessibilityProperties

Generic AccessibilityProperties 
Instance details

Defined in Test.Marionette.AccessibilityProperties

Associated Types

type Rep AccessibilityProperties 
Instance details

Defined in Test.Marionette.AccessibilityProperties

type Rep AccessibilityProperties = D1 ('MetaData "AccessibilityProperties" "Test.Marionette.AccessibilityProperties" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "AccessibilityProperties" 'PrefixI 'True) ((S1 ('MetaSel ('Just "role") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))) :*: (S1 ('MetaSel ('Just "value") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "description") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))
Show AccessibilityProperties 
Instance details

Defined in Test.Marionette.AccessibilityProperties

Eq AccessibilityProperties 
Instance details

Defined in Test.Marionette.AccessibilityProperties

type Rep AccessibilityProperties 
Instance details

Defined in Test.Marionette.AccessibilityProperties

type Rep AccessibilityProperties = D1 ('MetaData "AccessibilityProperties" "Test.Marionette.AccessibilityProperties" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "AccessibilityProperties" 'PrefixI 'True) ((S1 ('MetaSel ('Just "role") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))) :*: (S1 ('MetaSel ('Just "value") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "description") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))

newtype AuthenticatorId #

Constructors

AuthenticatorId Text 

Instances

Instances details
FromJSON AuthenticatorId 
Instance details

Defined in Test.Marionette.WebAuthn

ToJSON AuthenticatorId 
Instance details

Defined in Test.Marionette.WebAuthn

Generic AuthenticatorId 
Instance details

Defined in Test.Marionette.WebAuthn

Associated Types

type Rep AuthenticatorId 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep AuthenticatorId = D1 ('MetaData "AuthenticatorId" "Test.Marionette.WebAuthn" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'True) (C1 ('MetaCons "AuthenticatorId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
Show AuthenticatorId 
Instance details

Defined in Test.Marionette.WebAuthn

Eq AuthenticatorId 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep AuthenticatorId 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep AuthenticatorId = D1 ('MetaData "AuthenticatorId" "Test.Marionette.WebAuthn" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'True) (C1 ('MetaCons "AuthenticatorId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

data Context #

The browsing context for script execution.

Instances

Instances details
FromJSON Context 
Instance details

Defined in Test.Marionette.Context

ToJSON Context 
Instance details

Defined in Test.Marionette.Context

Bounded Context 
Instance details

Defined in Test.Marionette.Context

Enum Context 
Instance details

Defined in Test.Marionette.Context

Generic Context 
Instance details

Defined in Test.Marionette.Context

Associated Types

type Rep Context 
Instance details

Defined in Test.Marionette.Context

type Rep Context = D1 ('MetaData "Context" "Test.Marionette.Context" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "ContentContext" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ChromeContext" 'PrefixI 'False) (U1 :: Type -> Type))

Methods

from :: Context -> Rep Context x #

to :: Rep Context x -> Context #

Show Context 
Instance details

Defined in Test.Marionette.Context

Eq Context 
Instance details

Defined in Test.Marionette.Context

Methods

(==) :: Context -> Context -> Bool #

(/=) :: Context -> Context -> Bool #

type Rep Context 
Instance details

Defined in Test.Marionette.Context

type Rep Context = D1 ('MetaData "Context" "Test.Marionette.Context" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "ContentContext" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ChromeContext" 'PrefixI 'False) (U1 :: Type -> Type))

data Cookie #

Constructors

Cookie 

Instances

Instances details
FromJSON Cookie 
Instance details

Defined in Test.Marionette.Cookie

ToJSON Cookie 
Instance details

Defined in Test.Marionette.Cookie

Generic Cookie 
Instance details

Defined in Test.Marionette.Cookie

Methods

from :: Cookie -> Rep Cookie x #

to :: Rep Cookie x -> Cookie #

Show Cookie 
Instance details

Defined in Test.Marionette.Cookie

Eq Cookie 
Instance details

Defined in Test.Marionette.Cookie

Methods

(==) :: Cookie -> Cookie -> Bool #

(/=) :: Cookie -> Cookie -> Bool #

type Rep Cookie 
Instance details

Defined in Test.Marionette.Cookie

data Credential #

Instances

Instances details
FromJSON Credential 
Instance details

Defined in Test.Marionette.WebAuthn

ToJSON Credential 
Instance details

Defined in Test.Marionette.WebAuthn

Generic Credential 
Instance details

Defined in Test.Marionette.WebAuthn

Associated Types

type Rep Credential 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep Credential = D1 ('MetaData "Credential" "Test.Marionette.WebAuthn" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Credential" 'PrefixI 'True) ((S1 ('MetaSel ('Just "credentialId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CredentialId) :*: (S1 ('MetaSel ('Just "isResidentCredential") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "rpId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :*: (S1 ('MetaSel ('Just "privateKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "userHandle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "signCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))))
Show Credential 
Instance details

Defined in Test.Marionette.WebAuthn

Eq Credential 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep Credential 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep Credential = D1 ('MetaData "Credential" "Test.Marionette.WebAuthn" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Credential" 'PrefixI 'True) ((S1 ('MetaSel ('Just "credentialId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CredentialId) :*: (S1 ('MetaSel ('Just "isResidentCredential") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "rpId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :*: (S1 ('MetaSel ('Just "privateKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "userHandle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "signCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))))

newtype CredentialId #

Constructors

CredentialId Text 

Instances

Instances details
FromJSON CredentialId 
Instance details

Defined in Test.Marionette.WebAuthn

ToJSON CredentialId 
Instance details

Defined in Test.Marionette.WebAuthn

Generic CredentialId 
Instance details

Defined in Test.Marionette.WebAuthn

Associated Types

type Rep CredentialId 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep CredentialId = D1 ('MetaData "CredentialId" "Test.Marionette.WebAuthn" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'True) (C1 ('MetaCons "CredentialId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
Show CredentialId 
Instance details

Defined in Test.Marionette.WebAuthn

Eq CredentialId 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep CredentialId 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep CredentialId = D1 ('MetaData "CredentialId" "Test.Marionette.WebAuthn" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'True) (C1 ('MetaCons "CredentialId" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

newtype Element #

An opaque identifier for a web page element.

Constructors

Element 

Fields

Instances

Instances details
FromJSON Element 
Instance details

Defined in Test.Marionette.Element

ToJSON Element 
Instance details

Defined in Test.Marionette.Element

Read Element 
Instance details

Defined in Test.Marionette.Element

Show Element 
Instance details

Defined in Test.Marionette.Element

Eq Element 
Instance details

Defined in Test.Marionette.Element

Methods

(==) :: Element -> Element -> Bool #

(/=) :: Element -> Element -> Bool #

Ord Element 
Instance details

Defined in Test.Marionette.Element

Hashable Element 
Instance details

Defined in Test.Marionette.Element

Methods

hashWithSalt :: Int -> Element -> Int #

hash :: Element -> Int #

data Frame #

Instances

Instances details
FromJSON Frame 
Instance details

Defined in Test.Marionette.Frame

ToJSON Frame 
Instance details

Defined in Test.Marionette.Frame

Generic Frame 
Instance details

Defined in Test.Marionette.Frame

Associated Types

type Rep Frame 
Instance details

Defined in Test.Marionette.Frame

type Rep Frame = D1 ('MetaData "Frame" "Test.Marionette.Frame" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "FrameIndex" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: (C1 ('MetaCons "FrameElement" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Element)) :+: C1 ('MetaCons "TopFrame" 'PrefixI 'False) (U1 :: Type -> Type)))

Methods

from :: Frame -> Rep Frame x #

to :: Rep Frame x -> Frame #

Show Frame 
Instance details

Defined in Test.Marionette.Frame

Methods

showsPrec :: Int -> Frame -> ShowS #

show :: Frame -> String #

showList :: [Frame] -> ShowS #

Eq Frame 
Instance details

Defined in Test.Marionette.Frame

Methods

(==) :: Frame -> Frame -> Bool #

(/=) :: Frame -> Frame -> Bool #

Hashable Frame 
Instance details

Defined in Test.Marionette.Frame

Methods

hashWithSalt :: Int -> Frame -> Int #

hash :: Frame -> Int #

type Rep Frame 
Instance details

Defined in Test.Marionette.Frame

type Rep Frame = D1 ('MetaData "Frame" "Test.Marionette.Frame" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "FrameIndex" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: (C1 ('MetaCons "FrameElement" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Element)) :+: C1 ('MetaCons "TopFrame" 'PrefixI 'False) (U1 :: Type -> Type)))

data NewWindowResult #

Instances

Instances details
FromJSON NewWindowResult 
Instance details

Defined in Test.Marionette.Window

Generic NewWindowResult 
Instance details

Defined in Test.Marionette.Window

Associated Types

type Rep NewWindowResult 
Instance details

Defined in Test.Marionette.Window

type Rep NewWindowResult = D1 ('MetaData "NewWindowResult" "Test.Marionette.Window" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "NewWindowResult" 'PrefixI 'True) (S1 ('MetaSel ('Just "newWindowHandle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 WindowHandle) :*: S1 ('MetaSel ('Just "newWindowType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 WindowType)))
Show NewWindowResult 
Instance details

Defined in Test.Marionette.Window

Eq NewWindowResult 
Instance details

Defined in Test.Marionette.Window

type Rep NewWindowResult 
Instance details

Defined in Test.Marionette.Window

type Rep NewWindowResult = D1 ('MetaData "NewWindowResult" "Test.Marionette.Window" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "NewWindowResult" 'PrefixI 'True) (S1 ('MetaSel ('Just "newWindowHandle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 WindowHandle) :*: S1 ('MetaSel ('Just "newWindowType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 WindowType)))

data Orientation #

Constructors

Portrait 
Landscape 

Instances

Instances details
FromJSON Orientation 
Instance details

Defined in Test.Marionette.Orientation

ToJSON Orientation 
Instance details

Defined in Test.Marionette.Orientation

Generic Orientation 
Instance details

Defined in Test.Marionette.Orientation

Associated Types

type Rep Orientation 
Instance details

Defined in Test.Marionette.Orientation

type Rep Orientation = D1 ('MetaData "Orientation" "Test.Marionette.Orientation" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Portrait" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Landscape" 'PrefixI 'False) (U1 :: Type -> Type))
Show Orientation 
Instance details

Defined in Test.Marionette.Orientation

Eq Orientation 
Instance details

Defined in Test.Marionette.Orientation

type Rep Orientation 
Instance details

Defined in Test.Marionette.Orientation

type Rep Orientation = D1 ('MetaData "Orientation" "Test.Marionette.Orientation" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Portrait" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Landscape" 'PrefixI 'False) (U1 :: Type -> Type))

data Rect #

Constructors

Rect 

Fields

Instances

Instances details
FromJSON Rect 
Instance details

Defined in Test.Marionette.Rect

ToJSON Rect 
Instance details

Defined in Test.Marionette.Rect

Generic Rect 
Instance details

Defined in Test.Marionette.Rect

Associated Types

type Rep Rect 
Instance details

Defined in Test.Marionette.Rect

Methods

from :: Rect -> Rep Rect x #

to :: Rep Rect x -> Rect #

Show Rect 
Instance details

Defined in Test.Marionette.Rect

Methods

showsPrec :: Int -> Rect -> ShowS #

show :: Rect -> String #

showList :: [Rect] -> ShowS #

Eq Rect 
Instance details

Defined in Test.Marionette.Rect

Methods

(==) :: Rect -> Rect -> Bool #

(/=) :: Rect -> Rect -> Bool #

type Rep Rect 
Instance details

Defined in Test.Marionette.Rect

data RegistryEntry #

Instances

Instances details
ToJSON RegistryEntry 
Instance details

Defined in Test.Marionette.Registry

Generic RegistryEntry 
Instance details

Defined in Test.Marionette.Registry

Associated Types

type Rep RegistryEntry 
Instance details

Defined in Test.Marionette.Registry

type Rep RegistryEntry = D1 ('MetaData "RegistryEntry" "Test.Marionette.Registry" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "RegistryEntry" 'PrefixI 'True) ((S1 ('MetaSel ('Just "entryType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "namespace") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "directory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "options") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))
Show RegistryEntry 
Instance details

Defined in Test.Marionette.Registry

Eq RegistryEntry 
Instance details

Defined in Test.Marionette.Registry

type Rep RegistryEntry 
Instance details

Defined in Test.Marionette.Registry

type Rep RegistryEntry = D1 ('MetaData "RegistryEntry" "Test.Marionette.Registry" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "RegistryEntry" 'PrefixI 'True) ((S1 ('MetaSel ('Just "entryType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "namespace") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "directory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "options") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))

data Selector #

Specifies element(s) within a DOM tree using various selection methods.

Constructors

ById Text 
ByName Text 
ByClass Text

(Note: multiple classes are not allowed. For more control, use ByCSS)

ByTag Text 
ByLinkText Text 
ByPartialLinkText Text 
ByCSS Text 
ByXPath Text 
Anon Text 
AnonAttribute Text 

Instances

Instances details
ToJSON Selector 
Instance details

Defined in Test.Marionette.Selector

Generic Selector 
Instance details

Defined in Test.Marionette.Selector

Associated Types

type Rep Selector 
Instance details

Defined in Test.Marionette.Selector

type Rep Selector = D1 ('MetaData "Selector" "Test.Marionette.Selector" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (((C1 ('MetaCons "ById" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "ByName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :+: (C1 ('MetaCons "ByClass" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: (C1 ('MetaCons "ByTag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "ByLinkText" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))))) :+: ((C1 ('MetaCons "ByPartialLinkText" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "ByCSS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :+: (C1 ('MetaCons "ByXPath" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: (C1 ('MetaCons "Anon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "AnonAttribute" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))))))

Methods

from :: Selector -> Rep Selector x #

to :: Rep Selector x -> Selector #

Show Selector 
Instance details

Defined in Test.Marionette.Selector

Eq Selector 
Instance details

Defined in Test.Marionette.Selector

Hashable Selector 
Instance details

Defined in Test.Marionette.Selector

Methods

hashWithSalt :: Int -> Selector -> Int #

hash :: Selector -> Int #

type Rep Selector 
Instance details

Defined in Test.Marionette.Selector

type Rep Selector = D1 ('MetaData "Selector" "Test.Marionette.Selector" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (((C1 ('MetaCons "ById" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "ByName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :+: (C1 ('MetaCons "ByClass" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: (C1 ('MetaCons "ByTag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "ByLinkText" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))))) :+: ((C1 ('MetaCons "ByPartialLinkText" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "ByCSS" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :+: (C1 ('MetaCons "ByXPath" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: (C1 ('MetaCons "Anon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "AnonAttribute" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))))))

newtype Shadow #

An opaque identifier for a web page element that identifies a shadow root.

Constructors

Shadow 

Fields

Instances

Instances details
FromJSON Shadow 
Instance details

Defined in Test.Marionette.Element

ToJSON Shadow 
Instance details

Defined in Test.Marionette.Element

Read Shadow 
Instance details

Defined in Test.Marionette.Element

Show Shadow 
Instance details

Defined in Test.Marionette.Element

Eq Shadow 
Instance details

Defined in Test.Marionette.Element

Methods

(==) :: Shadow -> Shadow -> Bool #

(/=) :: Shadow -> Shadow -> Bool #

Ord Shadow 
Instance details

Defined in Test.Marionette.Element

Hashable Shadow 
Instance details

Defined in Test.Marionette.Element

Methods

hashWithSalt :: Int -> Shadow -> Int #

hash :: Shadow -> Int #

data Timeouts #

Constructors

Timeouts 

Instances

Instances details
FromJSON Timeouts 
Instance details

Defined in Test.Marionette.Timeouts

ToJSON Timeouts 
Instance details

Defined in Test.Marionette.Timeouts

Generic Timeouts 
Instance details

Defined in Test.Marionette.Timeouts

Associated Types

type Rep Timeouts 
Instance details

Defined in Test.Marionette.Timeouts

type Rep Timeouts = D1 ('MetaData "Timeouts" "Test.Marionette.Timeouts" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Timeouts" 'PrefixI 'True) (S1 ('MetaSel ('Just "script") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: (S1 ('MetaSel ('Just "pageLoad") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: S1 ('MetaSel ('Just "implicit") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)))))

Methods

from :: Timeouts -> Rep Timeouts x #

to :: Rep Timeouts x -> Timeouts #

Show Timeouts 
Instance details

Defined in Test.Marionette.Timeouts

Eq Timeouts 
Instance details

Defined in Test.Marionette.Timeouts

type Rep Timeouts 
Instance details

Defined in Test.Marionette.Timeouts

type Rep Timeouts = D1 ('MetaData "Timeouts" "Test.Marionette.Timeouts" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Timeouts" 'PrefixI 'True) (S1 ('MetaSel ('Just "script") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: (S1 ('MetaSel ('Just "pageLoad") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: S1 ('MetaSel ('Just "implicit") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)))))

data VirtualAuthenticator #

Constructors

VirtualAuthenticator 

Fields

Instances

Instances details
ToJSON VirtualAuthenticator 
Instance details

Defined in Test.Marionette.WebAuthn

Generic VirtualAuthenticator 
Instance details

Defined in Test.Marionette.WebAuthn

Associated Types

type Rep VirtualAuthenticator 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep VirtualAuthenticator = D1 ('MetaData "VirtualAuthenticator" "Test.Marionette.WebAuthn" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "VirtualAuthenticator" 'PrefixI 'True) (((S1 ('MetaSel ('Just "protocol") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "transport") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "hasResidentKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "hasUserVerification") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: ((S1 ('MetaSel ('Just "isUserConsenting") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "isUserVerified") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "extensions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text])) :*: S1 ('MetaSel ('Just "uvm") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Bool))))))
Show VirtualAuthenticator 
Instance details

Defined in Test.Marionette.WebAuthn

Eq VirtualAuthenticator 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep VirtualAuthenticator 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep VirtualAuthenticator = D1 ('MetaData "VirtualAuthenticator" "Test.Marionette.WebAuthn" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "VirtualAuthenticator" 'PrefixI 'True) (((S1 ('MetaSel ('Just "protocol") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "transport") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "hasResidentKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "hasUserVerification") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) :*: ((S1 ('MetaSel ('Just "isUserConsenting") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "isUserVerified") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)) :*: (S1 ('MetaSel ('Just "extensions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text])) :*: S1 ('MetaSel ('Just "uvm") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Bool))))))

newtype WindowHandle #

Constructors

WindowHandle Text 

Instances

Instances details
FromJSON WindowHandle 
Instance details

Defined in Test.Marionette.Window

ToJSON WindowHandle 
Instance details

Defined in Test.Marionette.Window

Read WindowHandle 
Instance details

Defined in Test.Marionette.Window

Show WindowHandle 
Instance details

Defined in Test.Marionette.Window

Eq WindowHandle 
Instance details

Defined in Test.Marionette.Window

Ord WindowHandle 
Instance details

Defined in Test.Marionette.Window

Hashable WindowHandle 
Instance details

Defined in Test.Marionette.Window

Orphan instances

Error Error :> es => MonadError Error (Eff es) Source # 
Instance details

Methods

throwError :: Error -> Eff es a #

catchError :: Eff es a -> (Error -> Eff es a) -> Eff es a #

(Concurrent :> es, Reader (TQueue CommandWithCallback) :> es, Error Error :> es, IOE :> es) => Marionette (Eff es) Source # 
Instance details