Skip to content

Commit

Permalink
feat: enabling e2e tests
Browse files Browse the repository at this point in the history
  • Loading branch information
darrenvechain committed Jan 15, 2024
1 parent 872ba93 commit 6a4c859
Show file tree
Hide file tree
Showing 5 changed files with 144 additions and 1 deletion.
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
tests
README.md
thorest.png
CODE_OF_CONDUCT.md
49 changes: 48 additions & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
```
88 changes: 88 additions & 0 deletions .github/workflows/test-e2e.yaml
Original file line number Diff line number Diff line change
@@ -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}}
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "tests/thor-e2e-tests"]
path = tests/thor-e2e-tests
url = https://github.com/vechain/thor-e2e-tests.git
1 change: 1 addition & 0 deletions tests/thor-e2e-tests
Submodule thor-e2e-tests added at c33c98

0 comments on commit 6a4c859

Please sign in to comment.