{"id":37022425,"url":"https://github.com/mkgiepard/doozer","last_synced_at":"2026-01-14T02:40:53.223Z","repository":{"id":243856868,"uuid":"770010323","full_name":"mkgiepard/doozer","owner":"mkgiepard","description":"Dead simple UI testing framework.","archived":false,"fork":false,"pushed_at":"2025-10-26T15:16:30.000Z","size":15126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-26T17:30:10.477Z","etag":null,"topics":["test-automation-framework","ui-test-automation","ui-testing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkgiepard.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-10T17:14:30.000Z","updated_at":"2025-10-26T15:16:34.000Z","dependencies_parsed_at":"2024-06-17T09:43:42.672Z","dependency_job_id":"0642c242-74d8-4da3-b922-4d36cf0515c0","html_url":"https://github.com/mkgiepard/doozer","commit_stats":null,"previous_names":["mkgiepard/doozer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mkgiepard/doozer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkgiepard%2Fdoozer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkgiepard%2Fdoozer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkgiepard%2Fdoozer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkgiepard%2Fdoozer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkgiepard","download_url":"https://codeload.github.com/mkgiepard/doozer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkgiepard%2Fdoozer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["test-automation-framework","ui-test-automation","ui-testing"],"created_at":"2026-01-14T02:40:52.516Z","updated_at":"2026-01-14T02:40:53.213Z","avatar_url":"https://github.com/mkgiepard.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# doozer\n\nDead simple UI testing framework. ([doozer.softtest.dev](https://doozer.softtest.dev/))\n\n## Installation\n\nDoozer is released into Maven central repository and can be installed by adding this dependency into\npom.xml file:\n\n```\n\u003cdependency\u003e\n    \u003cgroupId\u003edev.softtest\u003c/groupId\u003e\n    \u003cartifactId\u003edoozer\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nWith the latest updated in `junit-jupiter-engine` you need to also add the following plugin into the\nplugins section to address the test discovery issue:\n\n```\n\u003cplugin\u003e\n  \u003cartifactId\u003emaven-surefire-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e3.5.3\u003c/version\u003e\n  \u003cconfiguration\u003e\n    \u003csystemPropertyVariables\u003e\n      \u003cenvironment\u003e${test.folder}\u003c/environment\u003e\n          \u003c/systemPropertyVariables\u003e\n  \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\n\n## Setup\n\nPrerequisites:\n\n- Java SDK\n- Maven\n\nSteps:\n\n0. Create Maven [project](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html)\n\n    - If you are creating a project from scratch then you need to update the Java version used by compiler\n    (at least to version 8) in the pom.xml:\n\n    ```xml\n    \u003cmaven.compiler.source\u003e1.8\u003c/maven.compiler.source\u003e\n    \u003cmaven.compiler.target\u003e1.8\u003c/maven.compiler.target\u003e\n    ```\n\n    - Ensure all works well by running `mvn test` command.\n\n1. Add `doozer` dependency into pom.xml\n2. Create `MyDoozerTest` class that extends `DoozerTest`\n\n    ```java\n    import dev.softtest.doozer.DoozerTest;\n\n    public class MyDoozerTest extends DoozerTest {}\n    ```\n\n    This class is an entry point for various customizations, as long as you are not doing them it\n    stays empty like at the example above.\n\n\n## First Test\n\nDoozer test has a following structure:\n\n```\nfirstTest                 (test directory)\n├── firstTest.doozer      (main test script named the same way as a directory + .doozer suffix)\n└── goldens               (directory for reference files, like images, a11y snapshots, logs, etc)\n    ├── screenshot-1.png  (exemplary golden file)\n```\n\nSteps:\n\n1. Create a test directory, for example `firstTest`\n2. Inside this directory, create\n    - a test script called: `firstTest.doozer`\n    - a `goldens` directory for reference files\n3. Edit `firstTest.doozer` and add first actions\n\n    ```bash\n    url args:\"https://doozer.softtest.dev/test-pages/webform.html\"\n    assertPageTitle args:\"doozerByExample - exemplary page to testing doozer actions\"\n    ```\n\n4. Run the test with the following command:\n\n    ```bash\n    mvn test -Ddoozer.test=\u003cpath_to_your_test\u003e/firstTest/firstTest.doozer -Ddoozer.browser=chrome\n    ```\n\n    or if you are running on Windows, add quotes around command parameters, like this:\n\n    ```bash\n    mvn test \"-Ddoozer.test=\u003cpath_to_your_test\u003e/firstTest/firstTest.doozer\" \"-Ddoozer.browser=chrome\"\n    ```\n\n    \u003e **_NOTE:_**  Running the test with `-Ddoozer.browser=chrome` tells the doozer to use\n    Chrome as a browser for testing. By default the test would run on Chrome in headless mode so\n    you'll not see much, with this parameter the browser is in headful mode.\n\n5. The results will be displayed in the console but also you can check all the logs at:\n`\u003cyour_working_directory\u003e/target/doozer-tests`, feel free to explore.\n\n\n## Syntax\n\nPositional parameters:\n```\n\u003caction\u003e[?]\n\u003caction\u003e[?] \"\u003cselector\u003e\"\n\u003caction\u003e[?] \"\u003cselector\u003e\" \"\u003coptions\u003e\"\n```\n\n\nNamed parameters:\n\n```\n\u003caction\u003e[?]\n\u003caction\u003e[?] selector:\"\u003cselector\u003e\"\n\u003caction\u003e[?] args:\"\u003coptions\u003e\"\n\u003caction\u003e[?] selector:\"\u003cselector\u003e\" args:\"\u003coptions\u003e\"\n```\n\nExamples:\n\n```\nclick \"By.cssSelector('button')\"\nclick \"By.cssSelector('button')\" \"button=2,offsetX=10,offsetY=10\"\n\nclick selector:\"By.cssSelector('button')\"\nclick selector:\"By.cssSelector('button')\" args:\"button=2,offsetX=10,offsetY=10\"\nclick selector:\"Sl({button 'Accept *'})\"\n```\n\n`?` - optional parameter indicating the execution should proceed despite action failure\n\n### Actions\n\n- Assertions\n  - `assertCurrentUrl`\n  - `assertInnerText`\n  - `assertPageTitle`\n\n- Interactions\n  - `alert`\n  - `clear`\n  - `click`\n  - `contextClick`\n  - `deselect`\n  - `doubleClick`\n  - `hover`\n  - `hoverByOffset`\n  - `keyDown`\n  - `keyUp`\n  - `select`\n  - `sendKeys`\n  - `type`\n\n- Navigation\n  - `navigateBack`\n  - `navigateForward`\n  - `navigateTo`\n  - `refresh`\n  - `url`\n\n- Generics\n  - `addMask`\n  - `executeScript`\n  - `iframe`\n  - `import`\n  - `set`\n  - `takeScreenshot`\n  - `wait`\n  - `waitForElement`\n\n### Selectors\n\n- `By.` - By selectors\n- `Sl.` - Semantic locators\n- `\"\"` - empty selector, for actions that don't use it\n\n\n### Options\n\nOne of:\n\n- single parameter\n- a list of `key=value` pairs separated with `,`.\n\n## Launch parameters\n\n- `doozer.directory` - defines a directory with doozer scripts\n- `doozer.test` - defines a doozer script to run\n- `doozer.browser` - defines a browser to use during test, default: `chrome-headless`\n- `doozer.failOnPixelDiff` - when set to `false` all the `takeScreenshot` actions are treated as optional,\ndefault: `true`\n\n## License\n\nThe project is licensed with The Apache License, Version 2.0.\n(http://www.apache.org/licenses/LICENSE-2.0.txt).\n\n\n## Contact\n\nFeel free to reach me out on github or at info [ at ] softtest.dev.\n\n**Enjoy!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkgiepard%2Fdoozer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkgiepard%2Fdoozer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkgiepard%2Fdoozer/lists"}