| Copyright | (c) 2026 Institute for Digital Autonomy |
|---|---|
| License | EUPL-1.2 |
| Maintainer | IDA |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
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
quitMost 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
- class (Functor m, MonadError Error m) => Marionette (m :: Type -> Type)
- data MarionetteT (m :: Type -> Type) a
- runMarionetteT :: (MonadUnliftIO m, MonadMask m) => MarionetteT m a -> m a
- module Test.Marionette.Commands
- data Cookie = Cookie Text Text (Maybe Text) (Maybe Text) (Maybe Bool) (Maybe Bool) (Maybe Int)
- module Test.Marionette.Context
- module Test.Marionette.Frame
- data Element
- data Shadow
- module Test.Marionette.Orientation
- data Error = Error Text Text Text
- data Rect = Rect Float Float Float Float
- data RegistryEntry = RegistryEntry Text Text Text (Maybe Text)
- data Selector
- data SelectorFrom = SelectorFrom Element Selector
- data SelectorFromShadowRoot = SelectorFromShadowRoot Shadow Selector
- data Timeouts = Timeouts (Maybe Int) (Maybe Int) (Maybe Int)
- data AuthenticatorId
- data Credential = Credential CredentialId Bool Text Text (Maybe Text) Int
- data CredentialId
- data VirtualAuthenticator = VirtualAuthenticator Text Text Bool Bool Bool Bool (Maybe [Text]) (Maybe Bool)
- data WindowType
- data NewWindowResult = NewWindowResult {}
- data WindowHandle
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
Instances
| (MonadUnliftIO m, MonadThrow m, MonadCatch m) => Marionette (MarionetteT m) Source # | |
Defined in Test.Marionette.Client Methods sendCommand :: (HasCallStack, FromJSON a) => Command -> MarionetteT m a Source # sendCommands :: (HasCallStack, Traversable t, FromJSON a) => t Command -> MarionetteT m (t a) Source # | |
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
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.
module Test.Marionette.Commands
Instances
module Test.Marionette.Context
module Test.Marionette.Frame
An opaque identifier for a web page element.
An opaque identifier for a web page element that identifies a shadow root.
module Test.Marionette.Orientation
An error reported by a Marionette or WebDriver command, as returned by the server.
Instances
| FromJSON Error Source # | |||||
Defined in Test.Marionette.Protocol | |||||
| ToJSON Error Source # | |||||
| Exception Error Source # | |||||
Defined in Test.Marionette.Protocol Methods toException :: Error -> SomeException # fromException :: SomeException -> Maybe Error # displayException :: Error -> String # backtraceDesired :: Error -> Bool # | |||||
| Generic Error Source # | |||||
Defined in Test.Marionette.Protocol Associated Types
| |||||
| Show Error Source # | |||||
| (MonadThrow m, MonadCatch m) => MonadError Error (MarionetteT m) Source # | |||||
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 # | |||||
| ToJSON (Message Result) Source # | |||||
| type Rep Error Source # | |||||
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)))) | |||||
Instances
| FromJSON Rect Source # | |||||
Defined in Test.Marionette.Rect | |||||
| ToJSON Rect Source # | |||||
| Generic Rect Source # | |||||
Defined in Test.Marionette.Rect Associated Types
| |||||
| Show Rect Source # | |||||
| Eq Rect Source # | |||||
| type Rep Rect Source # | |||||
Defined in Test.Marionette.Rect type Rep Rect = D1 ('MetaData "Rect" "Test.Marionette.Rect" "marionette-1.0.0-2rXrb754J8I8DUtJcHv2xL" 'False) (C1 ('MetaCons "Rect" 'PrefixI 'True) ((S1 ('MetaSel ('Just "x") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "y") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float)) :*: (S1 ('MetaSel ('Just "width") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float) :*: S1 ('MetaSel ('Just "height") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Float)))) | |||||
data RegistryEntry Source #
Instances
| ToJSON RegistryEntry Source # | |||||
Defined in Test.Marionette.Registry Methods toJSON :: RegistryEntry -> Value # toEncoding :: RegistryEntry -> Encoding # toJSONList :: [RegistryEntry] -> Value # toEncodingList :: [RegistryEntry] -> Encoding # omitField :: RegistryEntry -> Bool # | |||||
| Generic RegistryEntry Source # | |||||
Defined in Test.Marionette.Registry Associated Types
| |||||
| Show RegistryEntry Source # | |||||
Defined in Test.Marionette.Registry Methods showsPrec :: Int -> RegistryEntry -> ShowS # show :: RegistryEntry -> String # showList :: [RegistryEntry] -> ShowS # | |||||
| Eq RegistryEntry Source # | |||||
Defined in Test.Marionette.Registry Methods (==) :: RegistryEntry -> RegistryEntry -> Bool # (/=) :: RegistryEntry -> RegistryEntry -> Bool # | |||||
| type Rep RegistryEntry Source # | |||||
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))))) | |||||
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 |
| ByTag Text | |
| ByLinkText Text | |
| ByPartialLinkText Text | |
| ByCSS Text | |
| ByXPath Text | |
| Anon Text | |
| AnonAttribute Text |
Instances
| ToJSON Selector Source # | |||||
| Generic Selector Source # | |||||
Defined in Test.Marionette.Selector Associated Types
| |||||
| Show Selector Source # | |||||
| Eq Selector Source # | |||||
| Hashable Selector Source # | |||||
Defined in Test.Marionette.Selector | |||||
| type Rep Selector Source # | |||||
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 SelectorFrom Source #
Constructors
| SelectorFrom Element Selector |
Instances
| ToJSON SelectorFrom Source # | |
Defined in Test.Marionette.Selector Methods toJSON :: SelectorFrom -> Value # toEncoding :: SelectorFrom -> Encoding # toJSONList :: [SelectorFrom] -> Value # toEncodingList :: [SelectorFrom] -> Encoding # omitField :: SelectorFrom -> Bool # | |
data SelectorFromShadowRoot Source #
Constructors
| SelectorFromShadowRoot Shadow Selector |
Instances
| ToJSON SelectorFromShadowRoot Source # | |
Defined in Test.Marionette.Selector Methods toJSON :: SelectorFromShadowRoot -> Value # toEncoding :: SelectorFromShadowRoot -> Encoding # toJSONList :: [SelectorFromShadowRoot] -> Value # toEncodingList :: [SelectorFromShadowRoot] -> Encoding # omitField :: SelectorFromShadowRoot -> Bool # | |
Instances
| FromJSON Timeouts Source # | |||||
Defined in Test.Marionette.Timeouts | |||||
| ToJSON Timeouts Source # | |||||
| Generic Timeouts Source # | |||||
Defined in Test.Marionette.Timeouts Associated Types
| |||||
| Show Timeouts Source # | |||||
| Eq Timeouts Source # | |||||
| type Rep Timeouts Source # | |||||
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
| FromJSON AuthenticatorId Source # | |||||
Defined in Test.Marionette.WebAuthn Methods parseJSON :: Value -> Parser AuthenticatorId # parseJSONList :: Value -> Parser [AuthenticatorId] # | |||||
| ToJSON AuthenticatorId Source # | |||||
Defined in Test.Marionette.WebAuthn Methods toJSON :: AuthenticatorId -> Value # toEncoding :: AuthenticatorId -> Encoding # toJSONList :: [AuthenticatorId] -> Value # toEncodingList :: [AuthenticatorId] -> Encoding # omitField :: AuthenticatorId -> Bool # | |||||
| Generic AuthenticatorId Source # | |||||
Defined in Test.Marionette.WebAuthn Associated Types
Methods from :: AuthenticatorId -> Rep AuthenticatorId x # to :: Rep AuthenticatorId x -> AuthenticatorId # | |||||
| Show AuthenticatorId Source # | |||||
Defined in Test.Marionette.WebAuthn Methods showsPrec :: Int -> AuthenticatorId -> ShowS # show :: AuthenticatorId -> String # showList :: [AuthenticatorId] -> ShowS # | |||||
| Eq AuthenticatorId Source # | |||||
Defined in Test.Marionette.WebAuthn Methods (==) :: AuthenticatorId -> AuthenticatorId -> Bool # (/=) :: AuthenticatorId -> AuthenticatorId -> Bool # | |||||
| type Rep AuthenticatorId Source # | |||||
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 #
Constructors
| Credential CredentialId Bool Text Text (Maybe Text) Int |
Instances
| FromJSON Credential Source # | |||||
Defined in Test.Marionette.WebAuthn | |||||
| ToJSON Credential Source # | |||||
Defined in Test.Marionette.WebAuthn Methods toJSON :: Credential -> Value # toEncoding :: Credential -> Encoding # toJSONList :: [Credential] -> Value # toEncodingList :: [Credential] -> Encoding # omitField :: Credential -> Bool # | |||||
| Generic Credential Source # | |||||
Defined in Test.Marionette.WebAuthn Associated Types
| |||||
| Show Credential Source # | |||||
Defined in Test.Marionette.WebAuthn Methods showsPrec :: Int -> Credential -> ShowS # show :: Credential -> String # showList :: [Credential] -> ShowS # | |||||
| Eq Credential Source # | |||||
Defined in Test.Marionette.WebAuthn | |||||
| type Rep Credential Source # | |||||
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
| FromJSON CredentialId Source # | |||||
Defined in Test.Marionette.WebAuthn | |||||
| ToJSON CredentialId Source # | |||||
Defined in Test.Marionette.WebAuthn Methods toJSON :: CredentialId -> Value # toEncoding :: CredentialId -> Encoding # toJSONList :: [CredentialId] -> Value # toEncodingList :: [CredentialId] -> Encoding # omitField :: CredentialId -> Bool # | |||||
| Generic CredentialId Source # | |||||
Defined in Test.Marionette.WebAuthn Associated Types
| |||||
| Show CredentialId Source # | |||||
Defined in Test.Marionette.WebAuthn Methods showsPrec :: Int -> CredentialId -> ShowS # show :: CredentialId -> String # showList :: [CredentialId] -> ShowS # | |||||
| Eq CredentialId Source # | |||||
Defined in Test.Marionette.WebAuthn | |||||
| type Rep CredentialId Source # | |||||
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
| ToJSON VirtualAuthenticator Source # | |||||
Defined in Test.Marionette.WebAuthn Methods toJSON :: VirtualAuthenticator -> Value # toEncoding :: VirtualAuthenticator -> Encoding # toJSONList :: [VirtualAuthenticator] -> Value # toEncodingList :: [VirtualAuthenticator] -> Encoding # omitField :: VirtualAuthenticator -> Bool # | |||||
| Generic VirtualAuthenticator Source # | |||||
Defined in Test.Marionette.WebAuthn Associated Types
Methods from :: VirtualAuthenticator -> Rep VirtualAuthenticator x # to :: Rep VirtualAuthenticator x -> VirtualAuthenticator # | |||||
| Show VirtualAuthenticator Source # | |||||
Defined in Test.Marionette.WebAuthn Methods showsPrec :: Int -> VirtualAuthenticator -> ShowS # show :: VirtualAuthenticator -> String # showList :: [VirtualAuthenticator] -> ShowS # | |||||
| Eq VirtualAuthenticator Source # | |||||
Defined in Test.Marionette.WebAuthn Methods (==) :: VirtualAuthenticator -> VirtualAuthenticator -> Bool # (/=) :: VirtualAuthenticator -> VirtualAuthenticator -> Bool # | |||||
| type Rep VirtualAuthenticator Source # | |||||
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 #
Instances
| FromJSON WindowType Source # | |||||
Defined in Test.Marionette.Window | |||||
| ToJSON WindowType Source # | |||||
Defined in Test.Marionette.Window Methods toJSON :: WindowType -> Value # toEncoding :: WindowType -> Encoding # toJSONList :: [WindowType] -> Value # toEncodingList :: [WindowType] -> Encoding # omitField :: WindowType -> Bool # | |||||
| Generic WindowType Source # | |||||
Defined in Test.Marionette.Window Associated Types
| |||||
| Show WindowType Source # | |||||
Defined in Test.Marionette.Window Methods showsPrec :: Int -> WindowType -> ShowS # show :: WindowType -> String # showList :: [WindowType] -> ShowS # | |||||
| Eq WindowType Source # | |||||
Defined in Test.Marionette.Window | |||||
| type Rep WindowType Source # | |||||
data NewWindowResult Source #
Constructors
| NewWindowResult | |
Fields | |
Instances
| FromJSON NewWindowResult Source # | |||||
Defined in Test.Marionette.Window Methods parseJSON :: Value -> Parser NewWindowResult # parseJSONList :: Value -> Parser [NewWindowResult] # | |||||
| Generic NewWindowResult Source # | |||||
Defined in Test.Marionette.Window Associated Types
Methods from :: NewWindowResult -> Rep NewWindowResult x # to :: Rep NewWindowResult x -> NewWindowResult # | |||||
| Show NewWindowResult Source # | |||||
Defined in Test.Marionette.Window Methods showsPrec :: Int -> NewWindowResult -> ShowS # show :: NewWindowResult -> String # showList :: [NewWindowResult] -> ShowS # | |||||
| Eq NewWindowResult Source # | |||||
Defined in Test.Marionette.Window Methods (==) :: NewWindowResult -> NewWindowResult -> Bool # (/=) :: NewWindowResult -> NewWindowResult -> Bool # | |||||
| type Rep NewWindowResult Source # | |||||
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
| FromJSON WindowHandle Source # | |
Defined in Test.Marionette.Window | |
| ToJSON WindowHandle Source # | |
Defined in Test.Marionette.Window Methods toJSON :: WindowHandle -> Value # toEncoding :: WindowHandle -> Encoding # toJSONList :: [WindowHandle] -> Value # toEncodingList :: [WindowHandle] -> Encoding # omitField :: WindowHandle -> Bool # | |
| Read WindowHandle Source # | |
Defined in Test.Marionette.Window Methods readsPrec :: Int -> ReadS WindowHandle # readList :: ReadS [WindowHandle] # | |
| Show WindowHandle Source # | |
Defined in Test.Marionette.Window Methods showsPrec :: Int -> WindowHandle -> ShowS # show :: WindowHandle -> String # showList :: [WindowHandle] -> ShowS # | |
| Eq WindowHandle Source # | |
Defined in Test.Marionette.Window | |
| Ord WindowHandle Source # | |
Defined in Test.Marionette.Window Methods compare :: WindowHandle -> WindowHandle -> Ordering # (<) :: WindowHandle -> WindowHandle -> Bool # (<=) :: WindowHandle -> WindowHandle -> Bool # (>) :: WindowHandle -> WindowHandle -> Bool # (>=) :: WindowHandle -> WindowHandle -> Bool # max :: WindowHandle -> WindowHandle -> WindowHandle # min :: WindowHandle -> WindowHandle -> WindowHandle # | |
| Hashable WindowHandle Source # | |
Defined in Test.Marionette.Window | |