marionette-1.0.0: Marionette protocol for Firefox
Copyright(c) 2026 Institute for Digital Autonomy
LicenseEUPL-1.2
MaintainerIDA
Safe HaskellTrustworthy
LanguageHaskell2010

Test.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 library provides Marionette, a typeclass for sending commands to a running Firefox process, as well as an implementation of every Marionette and WebDriver command. A concrete implementation can be found in MarionetteT/runMarionetteT.

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 runMarionetteT to connect to it and run a client program. Start a new session with newSession, and quit the session with quit:

import System.Process.Typed
import Test.Marionette

main :: IO ()
main =
  withProcessTerm_ (proc "firefox" ["--marionette", "--headless"]) $ \_process ->
      runMarionetteT $ do
          newSession
          -- More Marionette actions go here
          quit

Most Marionette actions need to be performed in a session.

Finding and interacting with elements

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

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

Error handling

Catch command failures via MonadError, for example to retry a command against a fallback element:

import Control.Monad.Error.Class (catchError)

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

Documentation

class (Functor m, MonadError Error m) => Marionette (m :: Type -> Type) Source #

Monads with the ability to send commands to a Marionette server and receive their results.

Minimal complete definition

sendCommand | sendCommands

Instances

Instances details
(MonadUnliftIO m, MonadThrow m, MonadCatch m) => Marionette (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

data MarionetteT (m :: Type -> Type) a Source #

A monad transformer that speaks the Marionette wire protocol over a TCP socket. Run it with runMarionetteT.

Instances

Instances details
(MonadThrow m, MonadCatch m) => MonadError Error (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

throwError :: Error -> MarionetteT m a #

catchError :: MarionetteT m a -> (Error -> MarionetteT m a) -> MarionetteT m a #

MonadIO m => MonadIO (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

liftIO :: IO a -> MarionetteT m a #

MonadCatch m => MonadCatch (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

catch :: (HasCallStack, Exception e) => MarionetteT m a -> (e -> MarionetteT m a) -> MarionetteT m a #

MonadMask m => MonadMask (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

mask :: HasCallStack => ((forall a. MarionetteT m a -> MarionetteT m a) -> MarionetteT m b) -> MarionetteT m b #

uninterruptibleMask :: HasCallStack => ((forall a. MarionetteT m a -> MarionetteT m a) -> MarionetteT m b) -> MarionetteT m b #

generalBracket :: HasCallStack => MarionetteT m a -> (a -> ExitCase b -> MarionetteT m c) -> (a -> MarionetteT m b) -> MarionetteT m (b, c) #

MonadThrow m => MonadThrow (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

throwM :: (HasCallStack, Exception e) => e -> MarionetteT m a #

Applicative m => Applicative (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

pure :: a -> MarionetteT m a #

(<*>) :: MarionetteT m (a -> b) -> MarionetteT m a -> MarionetteT m b #

liftA2 :: (a -> b -> c) -> MarionetteT m a -> MarionetteT m b -> MarionetteT m c #

(*>) :: MarionetteT m a -> MarionetteT m b -> MarionetteT m b #

(<*) :: MarionetteT m a -> MarionetteT m b -> MarionetteT m a #

Functor m => Functor (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

fmap :: (a -> b) -> MarionetteT m a -> MarionetteT m b #

(<$) :: a -> MarionetteT m b -> MarionetteT m a #

Monad m => Monad (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

(>>=) :: MarionetteT m a -> (a -> MarionetteT m b) -> MarionetteT m b #

(>>) :: MarionetteT m a -> MarionetteT m b -> MarionetteT m b #

return :: a -> MarionetteT m a #

(MonadUnliftIO m, MonadThrow m, MonadCatch m) => Marionette (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

MonadUnliftIO m => MonadUnliftIO (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

withRunInIO :: ((forall a. MarionetteT m a -> IO a) -> IO b) -> MarionetteT m b #

Monad m => MonadReader (TQueue CommandWithCallback) (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

runMarionetteT :: (MonadUnliftIO m, MonadMask m) => MarionetteT m a -> m a Source #

Connect to a Marionette server listening on localhost:2828 (started by launching Firefox with the --marionette flag), and run the given action against it.

data Cookie Source #

Instances

Instances details
FromJSON Cookie Source # 
Instance details

Defined in Test.Marionette.Cookie

ToJSON Cookie Source # 
Instance details

Defined in Test.Marionette.Cookie

Generic Cookie Source # 
Instance details

Defined in Test.Marionette.Cookie

Methods

from :: Cookie -> Rep Cookie x #

to :: Rep Cookie x -> Cookie #

Show Cookie Source # 
Instance details

Defined in Test.Marionette.Cookie

Eq Cookie Source # 
Instance details

Defined in Test.Marionette.Cookie

Methods

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

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

type Rep Cookie Source # 
Instance details

Defined in Test.Marionette.Cookie

data Element Source #

An opaque identifier for a web page element.

Instances

Instances details
FromJSON Element Source # 
Instance details

Defined in Test.Marionette.Element

ToJSON Element Source # 
Instance details

Defined in Test.Marionette.Element

Read Element Source # 
Instance details

Defined in Test.Marionette.Element

Show Element Source # 
Instance details

Defined in Test.Marionette.Element

Eq Element Source # 
Instance details

Defined in Test.Marionette.Element

Methods

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

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

Ord Element Source # 
Instance details

Defined in Test.Marionette.Element

Hashable Element Source # 
Instance details

Defined in Test.Marionette.Element

Methods

hashWithSalt :: Int -> Element -> Int #

hash :: Element -> Int #

data Shadow Source #

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

Instances

Instances details
FromJSON Shadow Source # 
Instance details

Defined in Test.Marionette.Element

ToJSON Shadow Source # 
Instance details

Defined in Test.Marionette.Element

Read Shadow Source # 
Instance details

Defined in Test.Marionette.Element

Show Shadow Source # 
Instance details

Defined in Test.Marionette.Element

Eq Shadow Source # 
Instance details

Defined in Test.Marionette.Element

Methods

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

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

Ord Shadow Source # 
Instance details

Defined in Test.Marionette.Element

Hashable Shadow Source # 
Instance details

Defined in Test.Marionette.Element

Methods

hashWithSalt :: Int -> Shadow -> Int #

hash :: Shadow -> Int #

data Error Source #

An error reported by a Marionette or WebDriver command, as returned by the server.

See https://w3c.github.io/webdriver/#errors

Constructors

Error Text Text Text 

Instances

Instances details
FromJSON Error Source # 
Instance details

Defined in Test.Marionette.Protocol

ToJSON Error Source # 
Instance details

Defined in Test.Marionette.Protocol

Exception Error Source # 
Instance details

Defined in Test.Marionette.Protocol

Generic Error Source # 
Instance details

Defined in Test.Marionette.Protocol

Associated Types

type Rep Error 
Instance details

Defined in Test.Marionette.Protocol

type Rep Error = D1 ('MetaData "Error" "Test.Marionette.Protocol" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Error" 'PrefixI 'True) (S1 ('MetaSel ('Just "error") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "message") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "stacktrace") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))))

Methods

from :: Error -> Rep Error x #

to :: Rep Error x -> Error #

Show Error Source # 
Instance details

Defined in Test.Marionette.Protocol

Methods

showsPrec :: Int -> Error -> ShowS #

show :: Error -> String #

showList :: [Error] -> ShowS #

(MonadThrow m, MonadCatch m) => MonadError Error (MarionetteT m) Source # 
Instance details

Defined in Test.Marionette.Client

Methods

throwError :: Error -> MarionetteT m a #

catchError :: MarionetteT m a -> (Error -> MarionetteT m a) -> MarionetteT m a #

FromJSON (Message Result) Source # 
Instance details

Defined in Test.Marionette.Protocol

ToJSON (Message Result) Source # 
Instance details

Defined in Test.Marionette.Protocol

type Rep Error Source # 
Instance details

Defined in Test.Marionette.Protocol

type Rep Error = D1 ('MetaData "Error" "Test.Marionette.Protocol" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Error" 'PrefixI 'True) (S1 ('MetaSel ('Just "error") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "message") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "stacktrace") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))))

data Rect Source #

Constructors

Rect Float Float Float Float 

Instances

Instances details
FromJSON Rect Source # 
Instance details

Defined in Test.Marionette.Rect

ToJSON Rect Source # 
Instance details

Defined in Test.Marionette.Rect

Generic Rect Source # 
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 Source # 
Instance details

Defined in Test.Marionette.Rect

Methods

showsPrec :: Int -> Rect -> ShowS #

show :: Rect -> String #

showList :: [Rect] -> ShowS #

Eq Rect Source # 
Instance details

Defined in Test.Marionette.Rect

Methods

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

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

type Rep Rect Source # 
Instance details

Defined in Test.Marionette.Rect

data RegistryEntry Source #

Instances

Instances details
ToJSON RegistryEntry Source # 
Instance details

Defined in Test.Marionette.Registry

Generic RegistryEntry Source # 
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 Source # 
Instance details

Defined in Test.Marionette.Registry

Eq RegistryEntry Source # 
Instance details

Defined in Test.Marionette.Registry

type Rep RegistryEntry Source # 
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 Source #

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 Source # 
Instance details

Defined in Test.Marionette.Selector

Generic Selector Source # 
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 Source # 
Instance details

Defined in Test.Marionette.Selector

Eq Selector Source # 
Instance details

Defined in Test.Marionette.Selector

Hashable Selector Source # 
Instance details

Defined in Test.Marionette.Selector

Methods

hashWithSalt :: Int -> Selector -> Int #

hash :: Selector -> Int #

type Rep Selector Source # 
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))))))

data Timeouts Source #

Constructors

Timeouts (Maybe Int) (Maybe Int) (Maybe Int) 

Instances

Instances details
FromJSON Timeouts Source # 
Instance details

Defined in Test.Marionette.Timeouts

ToJSON Timeouts Source # 
Instance details

Defined in Test.Marionette.Timeouts

Generic Timeouts Source # 
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 Source # 
Instance details

Defined in Test.Marionette.Timeouts

Eq Timeouts Source # 
Instance details

Defined in Test.Marionette.Timeouts

type Rep Timeouts Source # 
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 AuthenticatorId Source #

Instances

Instances details
FromJSON AuthenticatorId Source # 
Instance details

Defined in Test.Marionette.WebAuthn

ToJSON AuthenticatorId Source # 
Instance details

Defined in Test.Marionette.WebAuthn

Generic AuthenticatorId Source # 
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 Source # 
Instance details

Defined in Test.Marionette.WebAuthn

Eq AuthenticatorId Source # 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep AuthenticatorId Source # 
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 Credential Source #

Instances

Instances details
FromJSON Credential Source # 
Instance details

Defined in Test.Marionette.WebAuthn

ToJSON Credential Source # 
Instance details

Defined in Test.Marionette.WebAuthn

Generic Credential Source # 
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 Source # 
Instance details

Defined in Test.Marionette.WebAuthn

Eq Credential Source # 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep Credential Source # 
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)))))

data CredentialId Source #

Instances

Instances details
FromJSON CredentialId Source # 
Instance details

Defined in Test.Marionette.WebAuthn

ToJSON CredentialId Source # 
Instance details

Defined in Test.Marionette.WebAuthn

Generic CredentialId Source # 
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 Source # 
Instance details

Defined in Test.Marionette.WebAuthn

Eq CredentialId Source # 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep CredentialId Source # 
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)))

data VirtualAuthenticator Source #

Instances

Instances details
ToJSON VirtualAuthenticator Source # 
Instance details

Defined in Test.Marionette.WebAuthn

Generic VirtualAuthenticator Source # 
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 Source # 
Instance details

Defined in Test.Marionette.WebAuthn

Eq VirtualAuthenticator Source # 
Instance details

Defined in Test.Marionette.WebAuthn

type Rep VirtualAuthenticator Source # 
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))))))

data WindowType Source #

Constructors

Tab 
Window 

Instances

Instances details
FromJSON WindowType Source # 
Instance details

Defined in Test.Marionette.Window

ToJSON WindowType Source # 
Instance details

Defined in Test.Marionette.Window

Generic WindowType Source # 
Instance details

Defined in Test.Marionette.Window

Associated Types

type Rep WindowType 
Instance details

Defined in Test.Marionette.Window

type Rep WindowType = D1 ('MetaData "WindowType" "Test.Marionette.Window" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Tab" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Window" 'PrefixI 'False) (U1 :: Type -> Type))
Show WindowType Source # 
Instance details

Defined in Test.Marionette.Window

Eq WindowType Source # 
Instance details

Defined in Test.Marionette.Window

type Rep WindowType Source # 
Instance details

Defined in Test.Marionette.Window

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

data NewWindowResult Source #

Instances

Instances details
FromJSON NewWindowResult Source # 
Instance details

Defined in Test.Marionette.Window

Generic NewWindowResult Source # 
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 Source # 
Instance details

Defined in Test.Marionette.Window

Eq NewWindowResult Source # 
Instance details

Defined in Test.Marionette.Window

type Rep NewWindowResult Source # 
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 WindowHandle Source #

Instances

Instances details
FromJSON WindowHandle Source # 
Instance details

Defined in Test.Marionette.Window

ToJSON WindowHandle Source # 
Instance details

Defined in Test.Marionette.Window

Read WindowHandle Source # 
Instance details

Defined in Test.Marionette.Window

Show WindowHandle Source # 
Instance details

Defined in Test.Marionette.Window

Eq WindowHandle Source # 
Instance details

Defined in Test.Marionette.Window

Ord WindowHandle Source # 
Instance details

Defined in Test.Marionette.Window

Hashable WindowHandle Source # 
Instance details

Defined in Test.Marionette.Window