An open API service indexing awesome lists of open source software.

https://github.com/ndviet/test-cucumber-framework

A sample MarsAir project with test case is created and executed by using TestNG, Cucumber, Selenium
https://github.com/ndviet/test-cucumber-framework

automation cucumber-java test-automation testng-framework

Last synced: about 14 hours ago
JSON representation

A sample MarsAir project with test case is created and executed by using TestNG, Cucumber, Selenium

Awesome Lists containing this project

README

          

## Introduction

Test repository with test case is created and executed in Cucumber Framework.

## List dependency repositories

1. [test-parent-pom](../../../test-parent-pom)
2. [test-automation-fwk](../../../test-automation-fwk)

## Source code usage

1. Clone repository "test-parent-pom" (**mandatory**)

```shell
git clone git@github.com:ndviet/test-parent-pom.git
```

2. Clone this test repository to the same directory

```shell
git clone git@github.com:ndviet/test-cucumber-framework.git
```

3. Build source code in each repository following the order

- test-parent-pom
- test-cucumber-framework

4. Run test cases in test repository

```shell
cd test-cucumber-framework
```

```shell
mvn clean verify -DskipTests=false -D"includes=@SearchFlights" -D"selenium.browser.type=chrome"
```

## Run UI tests in shared container image + Selenium Grid

Use `ndviet/test-automation-java-common` as test runner container and start Selenium Grid from Docker Compose:

```shell
./test-cucumber-framework/run-in-container.sh
```

No local build of `test-parent-pom` or `test-automation-fwk` is required.
Dependencies are resolved from GitHub Maven repositories.
If package access is private, configure GitHub Packages credentials in `~/.m2/settings.xml`.

```xml



github
${env.GITHUB_ACTOR}
${env.GITHUB_TOKEN}

```

Override tags, browser, or image when needed:

```shell
CUCUMBER_TAGS=@PromotionalCode BROWSER=chrome TEST_IMAGE=ndviet/test-automation-java-common:latest ./test-cucumber-framework/run-in-container.sh
```

Keep Grid containers running after test execution:

```shell
KEEP_GRID_UP=true ./test-cucumber-framework/run-in-container.sh
```

Execution mode defaults:

1. `MAVEN_OFFLINE=true`: run immediately using dependencies pre-seeded in `test-automation-java-common`.
2. `MAVEN_NO_SNAPSHOT_UPDATES=true`: skip snapshot metadata checks (`-nsu`).
3. `MAVEN_AUTO_FALLBACK_ONLINE=true`: if offline fails, retry online automatically.

If you need to force remote Maven resolution:

```shell
MAVEN_OFFLINE=false MAVEN_NO_SNAPSHOT_UPDATES=false ./test-cucumber-framework/run-in-container.sh
```

## GitHub Actions UI workflow

Workflow file:

```text
.github/workflows/cucumber-ui-container.yml
```

The workflow:

1. Pulls shared test image `ndviet/test-automation-java-common` (or `DOCKERHUB_JAVA_COMMON_IMAGE` repo variable).
2. Starts Selenium Grid containers.
3. Runs Cucumber UI tests remotely against `http://selenium:4444`.
4. Uploads `target/reports` and `target/surefire-reports` as artifacts.

## Reference

A sample project with entire repositories together for the test execution.

* [test-automation-project](../../../test-automation-project)