module TestData where import Data.Base64.Types qualified as B64T import Data.ByteString qualified as BS import Data.ByteString.Base64 qualified as B64 import Data.Text (Text, pack, unpack) import IOUtils (findWebDriverRoot) import System.Directory (getCurrentDirectory) import System.FilePath (()) import WebDriverPreCore.HTTP.Protocol (URL (..)) testFilesDir :: IO FilePath testFilesDir = do currentDir <- getCurrentDirectory case findWebDriverRoot currentDir of Just root -> pure $ root testFilesSubDir Nothing -> error $ "Could not find 'webdriver' root directory from: " <> currentDir <> "\n tests are expected to be run from the 'webdriver' directory or " <> testFilesSubDir where testFilesSubDir = "webdriver-precore" "test" "testFiles" testPath :: FilePath -> IO Text testPath filename = pack . ( filename) <$> testFilesDir fileUrl :: FilePath -> IO URL fileUrl fp = MkUrl <$> ((<>) "file://") <$> testPath fp -- | Get absolute file path for upload test files uploadFilePath :: FilePath -> IO Text uploadFilePath filename = do testDir <- testFilesDir pure . pack $ testDir "uploadFiles" filename demoExtensionDirPath :: IO Text demoExtensionDirPath = testPath "demoExtension" demoExtensionZipPath :: IO Text demoExtensionZipPath = testPath "demoExtension.zip" demoExtensionAsBase64 :: IO Text demoExtensionAsBase64 = do zipPath <- demoExtensionZipPath zipContent <- BS.readFile (unpack zipPath) pure $ B64T.extractBase64 $ B64.encodeBase64 zipContent textAreaUrl :: IO URL textAreaUrl = fileUrl "textArea.html" checkboxesUrl :: IO URL checkboxesUrl = fileUrl "checkboxes.html" infiniteScrollUrl :: IO URL infiniteScrollUrl = fileUrl "infiniteScroll.html" promptUrl :: IO URL promptUrl = fileUrl "prompt.html" fragmentUrl :: IO URL fragmentUrl = fileUrl "fragment.html" downloadUrl :: IO URL downloadUrl = fileUrl "download.html" slowLoadUrl :: IO URL slowLoadUrl = fileUrl "slowLoad.html" downloadLinkUrl :: IO URL downloadLinkUrl = fileUrl "downloadLink.html" consoleLogUrl :: IO URL consoleLogUrl = fileUrl "consoleLog.html" scriptRealmUrl :: IO URL scriptRealmUrl = fileUrl "scriptRealm.html" badJavaScriptUrl :: IO URL badJavaScriptUrl = fileUrl "badJavaScript.html" uploadUrl :: IO URL uploadUrl = fileUrl "upload.html" navigation1Url :: IO URL navigation1Url = fileUrl "navigation1.html" navigation2Url :: IO URL navigation2Url = fileUrl "navigation2.html" navigation3Url :: IO URL navigation3Url = fileUrl "navigation3.html" navigation4Url :: IO URL navigation4Url = fileUrl "navigation4.html" navigation5Url :: IO URL navigation5Url = fileUrl "navigation5.html" navigation6Url :: IO URL navigation6Url = fileUrl "navigation6.html" loginUrl :: IO URL loginUrl = fileUrl "login.html" framesUrl :: IO URL framesUrl = fileUrl "frames.html" nestedFramesUrl :: IO URL nestedFramesUrl = fileUrl "nestedFrames.html" contentPageUrl :: IO URL contentPageUrl = fileUrl "contentPage.html" indexUrl :: IO URL indexUrl = fileUrl "index.html" shadowDomUrl :: IO URL shadowDomUrl = fileUrl "shadowDom.html" inputsUrl :: IO URL inputsUrl = fileUrl "inputs.html"