{"id":18745301,"url":"https://github.com/kwishna/api-test-automation-framework","last_synced_at":"2026-02-20T22:40:13.598Z","repository":{"id":204356132,"uuid":"711621514","full_name":"kwishna/api-test-automation-framework","owner":"kwishna","description":"Automation Framework With Serenity Rest Assured, Selenium Webdriver","archived":false,"fork":false,"pushed_at":"2025-04-19T10:16:13.000Z","size":720,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-20T07:32:27.526Z","etag":null,"topics":["azure-pipeline","cucumber-java","gradle","jenkins","junit5","maven","restassured","selenium-webdriver","serenity-bdd","serenity-restassured","testng"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kwishna.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-10-29T20:15:30.000Z","updated_at":"2025-04-19T10:16:16.000Z","dependencies_parsed_at":"2025-05-20T20:47:08.012Z","dependency_job_id":null,"html_url":"https://github.com/kwishna/api-test-automation-framework","commit_stats":null,"previous_names":["kwishna/api-test-automation-framework"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kwishna/api-test-automation-framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwishna%2Fapi-test-automation-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwishna%2Fapi-test-automation-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwishna%2Fapi-test-automation-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwishna%2Fapi-test-automation-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kwishna","download_url":"https://codeload.github.com/kwishna/api-test-automation-framework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwishna%2Fapi-test-automation-framework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29667093,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T19:49:36.704Z","status":"ssl_error","status_checked_at":"2026-02-20T19:44:05.372Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["azure-pipeline","cucumber-java","gradle","jenkins","junit5","maven","restassured","selenium-webdriver","serenity-bdd","serenity-restassured","testng"],"created_at":"2024-11-07T16:17:33.942Z","updated_at":"2026-02-20T22:40:13.576Z","avatar_url":"https://github.com/kwishna.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Parameter\t        Purpose\nparallel\t        Level of parallelism (methods, classes, suites)\nthreadCount\tTotal   number of threads for parallel execution\nthreadCountSuites\tThreads dedicated to suites\nthreadCountClasses\tThreads dedicated to classes\nthreadCountMethods\tThreads dedicated to methods\nuseUnlimitedThreads\tAllow unlimited threads (boolean)\nforkCount\t        Number of JVM processes spawned concurrently\nreuseForks\t        Whether to reuse JVM forks for multiple tests\n\n### JUnit5\nJUnit 5 is highly modular and supports extensive configuration through annotations, system properties, and build tool plugins.\n@Test: Marks a method as a test.\n@ParameterizedTest: Allows running a test with multiple data sets.\n@ValueSource, @CsvSource, @MethodSource, @EnumSource, @ArgumentsSource: Provide data for parameterized tests.\n@Tag: Categorize tests for selective execution.\n@DisplayName: Custom name for test methods.\n\nLifecycle and Hooks\n@BeforeAll, @BeforeEach, @AfterEach, @AfterAll: Setup and teardown methods.\n@TestInstance: Controls test instance lifecycle (per class or per method).\n\n### Cucumber\ncucumber.ansi-colors.disabled=  # true or false. default: false\ncucumber.execution.dry-run=     # true or false. default: false\ncucumber.execution.limit=       # number of scenarios to execute (CLI only).\ncucumber.execution.order=       # lexical, reverse, random or random:[seed] (CLI only). default: lexical\ncucumber.execution.wip=         # true or false. default: false.\ncucumber.features=              # comma separated paths to feature files. example: path/to/example.feature, path/to/other.feature\ncucumber.filter.name=           # regex. example: .*Hello.*\ncucumber.filter.tags=           # tag expression. example: @smoke and not @slow\ncucumber.glue=                  # comma separated package names. example: com.example.glue\ncucumber.plugin=                # comma separated plugin strings. example: pretty, json:path/to/report.json\ncucumber.object-factory=        # object factory class name. example: com.example.MyObjectFactory\ncucumber.snippet-type=          # underscore or camelcase. default: underscore\n\n\ncucumber.glue=                  # comma separated package names. \n                                # example: com.example.glue  \n  \ncucumber.plugin=                # comma separated plugin strings. \n                                # example: pretty, json:path/to/report.json\n\ncucumber.object-factory=        # object factory class name.\n                                # example: com.example.MyObjectFactory\n\ncucumber.uuid-generator         # uuid generator class name of a registered service provider.\n                                # default: io.cucumber.core.eventbus.RandomUuidGenerator\n                                # example: com.example.MyUuidGenerator\n\ncucumber.publish.enabled        # true or false. default: false\n                                # enable publishing of test results \n\ncucumber.publish.quiet          # true or false. default: false\n                                # supress publish banner after test exeuction  \n\ncucumber.publish.token          # any string value.\n                                # publish authenticated test results\n\ncucumber.publish.url            # a valid url\n                                # location to publish test reports to\n\ncucumber.snippet-type=          # underscore or camelcase. \n                                # default: underscore\n\n@CucumberOptions Annotation: Placed on the test runner class to control execution:\nfeatures: Path(s) to feature files.\nglue:     Package(s) containing step definitions.\ntags:     Filter which scenarios to run.\nplugin:   Output/reporting formats (e.g., HTML, JSON).\ndryRun:   Checks step definitions without executing tests.\nstrict:   Fails tests if there are undefined steps.\nname:     Regex to select scenarios by name.\nsnippets: Code style for generated step definitions (camelCase or underscore).\n\nJUnit5\ncucumber.execution.parallel.enabled=true\ncucumber.execution.parallel.config.strategy=fixed               # dynamic, fixed or custom.\ncucumber.execution.parallel.config.fixed.parallelism=2          # positive integer.\ncucumber.execution.parallel.config.fixed.max-pool-size=2        # positive integer.\n\n@Suite\n@IncludeEngines(\"cucumber\")\n@SelectClasspathResource(\"com/qa/selenium/cucumber/features/\")\n@ConfigurationParameter(\n    key = GLUE_PROPERTY_NAME,\n    value = \"com.qa.selenium.cucumber.steps, com.qa.selenium.cucumber.hooks\"\n    )\npublic class CucumberRunnerTest {}\n\nmvn test -Dsurefire.includeJUnit5Engines=cucumber -Dcucumber.plugin=pretty -Dcucumber.features=path/to/example.feature:10\nhttps://github.com/cucumber/cucumber-jvm/blob/main/cucumber-junit-platform-engine/README.md\n\n### Retry\n\n```java\npackage cucumber.runner;\n\nimport io.cucumber.testng.AbstractTestNGCucumberTests;\nimport io.cucumber.testng.CucumberOptions;\n\n@CucumberOptions(\n        features = \"src/test/java/cucumber/feature/Login.feature\",\n        glue = {\"cucumber.stepdefinitions\"},\n        tags = \"@LoginTest\",\n        plugin = {\"rerun:target/failedrerun.txt\"}\n)\npublic class LoginRunner extends AbstractTestNGCucumberTests {\n}\n```\n\n```java\npackage cucumber.runner;\n\nimport io.cucumber.testng.AbstractTestNGCucumberTests;\nimport io.cucumber.testng.CucumberOptions;\n\n@CucumberOptions(\n        features = \"@target/failedrerun.txt\",\n        glue = {\"cucumber.stepdefinitions\"}\n)\npublic class FailedTestRerun extends AbstractTestNGCucumberTests {\n}\n```\n\n```xml\n\u003c!DOCTYPE suite SYSTEM \"https://testng.org/testng-1.0.dtd\" \u003e\n\n\u003csuite name=\"Our Suite\" verbose=\"1\" \u003e\n    \u003ctest name=\"YouTube test on Chrome\"\u003e\n        \u003cclasses\u003e\n            \u003cclass name=\"cucumber.runner.LoginRunner\" /\u003e\n        \u003c/classes\u003e\n    \u003c/test\u003e\n    \u003ctest name=\"Rerun failed tests\"\u003e\n        \u003cclasses\u003e\n            \u003cclass name=\"cucumber.runner.FailedTestRerun\" /\u003e\n        \u003c/classes\u003e\n    \u003c/test\u003e\n\u003c/suite\u003e\n```\n\nJenkinsfile\n# e.g: \ngradle cleanTest test or mvn test\n\nfilename=\"/var/lib/jenkins/workspace/your-workspace-name/failedrerun.txt\"\nif [ -e \"$filename\" ]; then\n    # Check if the file size is greater than 0 bytes\n    if [ -s \"$filename\" ]; then\n        echo \"The file '$filename' exists and its size is greater than 0 bytes.\"\n        # put your maven/gradle test command here to rerun failed tests\n        # e.g: \n        gradle cleanTest test -P reruntest or mvn test -Dtest=FailedTestRerun\n    else\n        echo \"The file '$filename' exists, but its size is 0 bytes.\"\n    fi\nelse\n    echo \"The file '$filename' does not exist.\"\nfi","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkwishna%2Fapi-test-automation-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkwishna%2Fapi-test-automation-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkwishna%2Fapi-test-automation-framework/lists"}