From af53a8fbb86248baceebd3f3bc69865bf92932b8 Mon Sep 17 00:00:00 2001 From: Sander Declerck Date: Wed, 30 Jul 2025 16:54:57 +0200 Subject: [PATCH] Run e2e tests on PR check --- .github/workflows/test-on-pr.yml | 24 +++++++++++----------- safe-chain/package.json | 1 - test/e2e/package-lock.json | 32 +++++++++++++++++++++++++++++ test/e2e/package.json | 15 ++++++++++++++ test/e2e/setup.teardown.e2e.spec.js | 5 ++--- 5 files changed, 61 insertions(+), 16 deletions(-) create mode 100644 test/e2e/package-lock.json create mode 100644 test/e2e/package.json diff --git a/.github/workflows/test-on-pr.yml b/.github/workflows/test-on-pr.yml index a68c07b..c9302e9 100644 --- a/.github/workflows/test-on-pr.yml +++ b/.github/workflows/test-on-pr.yml @@ -48,18 +48,18 @@ jobs: node-version: "24" cache: "npm" - # - name: Install dependencies - # run: npm ci + - name: Install dependencies + run: npm ci - # - name: Run unit tests - # run: npm test + - name: Run unit tests + run: npm test - # - name: Run E2E tests - # run: npm run test:e2e + - name: Run E2E tests + run: npm run test:e2e - # - name: Clean up Docker resources - # if: always() - # run: | - # # Clean up any remaining containers and images - # docker ps -aq --filter "name=safe-chain-e2e-test" | xargs -r docker rm -f - # docker images -q safe-chain-e2e-test | xargs -r docker rmi -f + - name: Clean up Docker resources + if: always() + run: | + # Clean up any remaining containers and images + docker ps -aq --filter "name=safe-chain-e2e-test" | xargs -r docker rm -f + docker images -q safe-chain-e2e-test | xargs -r docker rmi -f diff --git a/safe-chain/package.json b/safe-chain/package.json index eceeef9..1fb7788 100644 --- a/safe-chain/package.json +++ b/safe-chain/package.json @@ -4,7 +4,6 @@ "scripts": { "test": "node --test --experimental-test-module-mocks **/*.spec.js", "test:watch": "node --test --watch --experimental-test-module-mocks **/*.spec.js", - "test:e2e": "node --test test/e2e/**/*.e2e.spec.js", "lint": "eslint ." }, "repository": { diff --git a/test/e2e/package-lock.json b/test/e2e/package-lock.json new file mode 100644 index 0000000..55aabb7 --- /dev/null +++ b/test/e2e/package-lock.json @@ -0,0 +1,32 @@ +{ + "name": "@aikidosec/safe-chain-e2e-tests", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@aikidosec/safe-chain-e2e-tests", + "version": "1.0.0", + "license": "AGPL-3.0-or-later", + "dependencies": { + "node-pty": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.0.tgz", + "integrity": "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==", + "license": "MIT" + }, + "node_modules/node-pty": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.0.0.tgz", + "integrity": "sha512-wtBMWWS7dFZm/VgqElrTvtfMq4GzJ6+edFI0Y0zyzygUSZMgZdraDUMUhCIvkjhJjme15qWmbyJbtAx4ot4uZA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "nan": "^2.17.0" + } + } + } +} diff --git a/test/e2e/package.json b/test/e2e/package.json new file mode 100644 index 0000000..4748762 --- /dev/null +++ b/test/e2e/package.json @@ -0,0 +1,15 @@ +{ + "name": "@aikidosec/safe-chain-e2e-tests", + "version": "1.0.0", + "description": "End-to-end tests for the Aikido Safe Chain", + "scripts": { + "test": "node --test **/*.spec.js" + }, + "keywords": [], + "author": "Aikido Security", + "license": "AGPL-3.0-or-later", + "type": "module", + "dependencies": { + "node-pty": "^1.0.0" + } +} diff --git a/test/e2e/setup.teardown.e2e.spec.js b/test/e2e/setup.teardown.e2e.spec.js index 16b2669..ad3f264 100644 --- a/test/e2e/setup.teardown.e2e.spec.js +++ b/test/e2e/setup.teardown.e2e.spec.js @@ -7,7 +7,6 @@ import assert from "node:assert"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const projectRoot = path.resolve(__dirname, "../.."); describe("E2E: safe-chain setup command", () => { const imageName = "safe-chain-e2e-test"; @@ -17,8 +16,8 @@ describe("E2E: safe-chain setup command", () => { before(async () => { // Build the Docker image for the test environment try { - execSync(`docker build -t ${imageName} -f test/e2e/Dockerfile .`, { - cwd: projectRoot, + execSync(`docker build -t ${imageName} -f Dockerfile ../../safe-chain`, { + cwd: __dirname, stdio: "ignore", }); } catch (error) {