From 6a4c859370d76a11d518a456e813a7b0910c166a Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Mon, 15 Jan 2024 16:29:28 +0000 Subject: [PATCH] feat: enabling e2e tests --- .dockerignore | 4 ++ .github/CONTRIBUTING.md | 49 +++++++++++++++++- .github/workflows/test-e2e.yaml | 88 +++++++++++++++++++++++++++++++++ .gitmodules | 3 ++ tests/thor-e2e-tests | 1 + 5 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/test-e2e.yaml create mode 160000 tests/thor-e2e-tests diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..85376b5eb --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +tests +README.md +thorest.png +CODE_OF_CONDUCT.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 8f2cb4c9d..ce50bd9f3 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -34,7 +34,8 @@ current development landscape. ```bash make test ``` - - **Note:**: Please refer to the [README](https://github.com/vechain/thor/blob/master/README.md) for information on how to start the node and interact with the + - **Note:**: Please refer to the [README](https://github.com/vechain/thor/blob/master/README.md) for information on + how to start the node and interact with the API. 5. Make your changes and commit them with a clear and concise commit message. 6. Push your changes to your forked repository: @@ -57,3 +58,49 @@ current development landscape. - We follow the [Effective Go](https://golang.org/doc/effective_go) guidelines. Please make sure your code is idiomatic and follows the guidelines. + +## Testing + +### Unit Tests + +```bash +make test +``` + +### Unit Tests with Coverage + +```bash +make test-coverage +``` + +### E2E Tests + +Our E2E tests are written in TypeScript, utilizing hardhat contract solidity development tools. Before running the E2E +tests, ensure you have the following prerequisites installed: + +- [Docker](https://docs.docker.com/get-docker/) +- [Node.js](https://nodejs.org/en/download/) +- [Yarn](https://classic.yarnpkg.com/en/docs/install/) +- [Git](https://git-scm.com/downloads) + +The E2E tests are located in the tests/thor-e2e-tests directory as a submodule. If you haven't initialized the submodule +yet, run: + +```bash +git submodule update --init --recursive +``` + +To run the E2E tests, build the Docker image first: + +```bash +docker build -t vechain/thor-e2e . +export THOR_IMAGE=vechain/thor-e2e +``` + +Then, you can run the tests: + +```bash +cd tests/thor-e2e-tests +yarn install +yarn test +``` diff --git a/.github/workflows/test-e2e.yaml b/.github/workflows/test-e2e.yaml new file mode 100644 index 000000000..25211498d --- /dev/null +++ b/.github/workflows/test-e2e.yaml @@ -0,0 +1,88 @@ +name: E2E Tests + +on: + pull_request: + branches: + - master + push: + branches: + - master + +jobs: + build-docker-image: + name: Build Docker image + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and export + uses: docker/build-push-action@v5 + with: + context: . + tags: vechain/thor:${{ github.sha }} + outputs: type=docker,dest=/tmp/vechain-thor.tar + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: vechain-thor-image + path: /tmp/vechain-thor.tar + retention-days: 7 + + run-tests: + runs-on: ubuntu-latest + needs: build-docker-image + env: + THOR_IMAGE: vechain/thor:${{ github.sha }} + name: Run E2E Tests + steps: + + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Download artifact + uses: actions/download-artifact@v3 + with: + name: vechain-thor-image + path: /tmp + + - name: Setup Node JS + uses: actions/setup-node@v4 + with: + node-version: '18.x' + + - name: Load image + run: | + docker load --input /tmp/vechain-thor.tar + docker image ls -a + - name: Run Tests + working-directory: ./tests/thor-e2e-tests + run: | + export THOR_IMAGE=vechain/thor:${{ github.sha }} + yarn install + yarn test + - name: Publish Results + uses: dorny/test-reporter@v1 + id: test-reporter + if: success() || failure() + with: + name: E2E Test Results + only-summary: 'false' + list-suites: 'all' + list-tests: 'failed' + fail-on-error: 'true' + reporter: "jest-junit" + path: | + ./tests/thor-e2e-tests/junit.xml + - name: Echo Report URL + run: | + echo ${{steps.test-reporter.outputs.url_html}} diff --git a/.gitmodules b/.gitmodules index e69de29bb..3441a15eb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tests/thor-e2e-tests"] + path = tests/thor-e2e-tests + url = https://github.com/vechain/thor-e2e-tests.git diff --git a/tests/thor-e2e-tests b/tests/thor-e2e-tests new file mode 160000 index 000000000..c33c98529 --- /dev/null +++ b/tests/thor-e2e-tests @@ -0,0 +1 @@ +Subproject commit c33c985298bb70406cdacbd51fce80e6dd50c3d7