Skip to content

Commit

Permalink
Merge pull request #24 from darrenvechain/e2e-test-setup
Browse files Browse the repository at this point in the history
feat: enabling e2e tests
  • Loading branch information
darrenvechain authored Jan 15, 2024
2 parents d73c32b + cd3784e commit db643b1
Show file tree
Hide file tree
Showing 5 changed files with 147 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 Down Expand Up @@ -62,3 +63,49 @@ current development landscape.

- We employ `golangci-lint` for code linting in our development process. It ensures that code adheres to established standards, and any changes that do not pass the linting checks will trigger an error during the Continuous Integration (CI) process.
- You can run it locally by installing the `golangci-lint` binary and running `make lint` in the root directory of the repository.

## 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
```
91 changes: 91 additions & 0 deletions .github/workflows/test-e2e.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
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 db643b1

Please sign in to comment.