From 6a4c859370d76a11d518a456e813a7b0910c166a Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Mon, 15 Jan 2024 16:29:28 +0000 Subject: [PATCH 1/4] 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 From 50ba0b83363ae33e56d25427568c2f51c5a78b38 Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Mon, 15 Jan 2024 16:40:31 +0000 Subject: [PATCH 2/4] fix: e2e report for forked PRs --- .github/workflows/test-e2e-results.yaml | 28 +++++++++++++++++++++++++ .github/workflows/test-e2e.yaml | 19 +++++------------ 2 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/test-e2e-results.yaml diff --git a/.github/workflows/test-e2e-results.yaml b/.github/workflows/test-e2e-results.yaml new file mode 100644 index 000000000..dff9482d4 --- /dev/null +++ b/.github/workflows/test-e2e-results.yaml @@ -0,0 +1,28 @@ +name: 'E2E Test Report' + +on: + workflow_run: + workflows: ['E2E Tests'] + types: + - completed + +permissions: + contents: read + actions: read + checks: write + +jobs: + report: + runs-on: ubuntu-latest + steps: + - uses: dorny/test-reporter@v1 + id: test-reporter + with: + artifact: test-results + name: JEST Tests + path: '*.xml' + reporter: jest-junit + + - name: Echo Report URL + run: | + echo ${{steps.test-reporter.outputs.url_html}} diff --git a/.github/workflows/test-e2e.yaml b/.github/workflows/test-e2e.yaml index 25211498d..f1c8fd956 100644 --- a/.github/workflows/test-e2e.yaml +++ b/.github/workflows/test-e2e.yaml @@ -64,25 +64,16 @@ jobs: 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 + + - uses: actions/upload-artifact@v3 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}} + name: e2e-test-results + path: ./tests/thor-e2e-tests/junit.xml From a183c412d7e04c8a54434a7256688b0ac9419155 Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Tue, 16 Jan 2024 08:47:20 +0000 Subject: [PATCH 3/4] chore: update report name --- .github/workflows/test-e2e-results.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-e2e-results.yaml b/.github/workflows/test-e2e-results.yaml index dff9482d4..a7166cfea 100644 --- a/.github/workflows/test-e2e-results.yaml +++ b/.github/workflows/test-e2e-results.yaml @@ -19,7 +19,7 @@ jobs: id: test-reporter with: artifact: test-results - name: JEST Tests + name: E2E Test Report path: '*.xml' reporter: jest-junit From 194064509f3847099f8cd57c7d44fd268e83da1d Mon Sep 17 00:00:00 2001 From: Darren Kelly Date: Tue, 16 Jan 2024 09:16:49 +0000 Subject: [PATCH 4/4] chore: update actions name --- .github/workflows/test-docker-build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-docker-build.yaml b/.github/workflows/test-docker-build.yaml index b80be30d5..87d09678f 100644 --- a/.github/workflows/test-docker-build.yaml +++ b/.github/workflows/test-docker-build.yaml @@ -22,7 +22,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Build and push + - name: Test Build uses: docker/build-push-action@v4 with: context: .