Skip to content

Commit 2e8fba6

Browse files
authored
Merge branch 'master' into test-orchestration
2 parents d835310 + 9bffc72 commit 2e8fba6

File tree

383 files changed

+14957
-2504
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

383 files changed

+14957
-2504
lines changed

.github/scripts/bump-versions.mjs

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,9 @@ function generateExperimentalVersion(currentVersion) {
2222
return `${parsed.major}.${parsed.minor}.${parsed.patch}-exp.0`;
2323
}
2424

25-
function generateRcVersion(currentVersion) {
26-
const parsed = semver.parse(currentVersion);
27-
if (!parsed) throw new Error(`Invalid version: ${currentVersion}`);
28-
29-
// Check if it's already an RC version
30-
if (parsed.prerelease.length > 0 && parsed.prerelease[0] === 'rc') {
31-
// Increment the RC number
32-
const rcNum = (parsed.prerelease[1] || 0) + 1;
33-
return `${parsed.major}.${parsed.minor}.${parsed.patch}-rc.${rcNum}`;
34-
}
35-
36-
// Create new RC version: <major>.<minor>.<patch>-rc.0
37-
return `${parsed.major}.${parsed.minor}.${parsed.patch}-rc.0`;
38-
}
39-
4025
const rootDir = process.cwd();
4126
const releaseType = process.env.RELEASE_TYPE;
42-
assert.match(releaseType, /^(patch|minor|major|experimental|rc)$/, 'Invalid RELEASE_TYPE');
27+
assert.match(releaseType, /^(patch|minor|major|experimental|premajor)$/, 'Invalid RELEASE_TYPE');
4328

4429
// TODO: if releaseType is `auto` determine release type based on the changelog
4530

@@ -78,8 +63,8 @@ for (const packageName in packageMap) {
7863
)
7964
? releaseType === 'experimental'
8065
? generateExperimentalVersion(version)
81-
: releaseType === 'rc'
82-
? generateRcVersion(version)
66+
: releaseType === 'premajor'
67+
? semver.inc(version, version.includes('-rc.') ? 'prerelease' : 'premajor', undefined, 'rc')
8368
: semver.inc(version, releaseType)
8469
: version;
8570

.github/workflows/ci-evals.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,22 @@ jobs:
4747
- name: Setup and Build
4848
uses: ./.github/actions/setup-nodejs-blacksmith
4949

50+
- name: Install uv
51+
uses: astral-sh/setup-uv@d9e0f98d3fc6adb07d1e3d37f3043649ddad06a1 # 6.5.0
52+
with:
53+
enable-cache: true
54+
55+
- name: Install just
56+
uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3.0.0
57+
58+
- name: Install Python
59+
working-directory: packages/@n8n/ai-workflow-builder.ee/evaluations/programmatic/python
60+
run: uv python install 3.11
61+
62+
- name: Install workflow comparison dependencies
63+
working-directory: packages/@n8n/ai-workflow-builder.ee/evaluations/programmatic/python
64+
run: just sync-all
65+
5066
- name: Export Node Types
5167
run: |
5268
./packages/cli/bin/n8n export:nodes --output ./packages/@n8n/ai-workflow-builder.ee/evaluations/nodes.json

.github/workflows/ci-postgres-mysql.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ on:
1616
- packages/cli/**/__tests__/**
1717
- .github/workflows/ci-postgres-mysql.yml
1818
- .github/docker-compose.yml
19-
pull_request_review:
20-
types: [submitted]
2119

2220
concurrency:
2321
group: db-${{ github.event.pull_request.number || github.ref }}

.github/workflows/ci-pull-requests.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ name: Build, unit test and lint branch
22

33
on:
44
pull_request:
5-
branches:
6-
- '**'
7-
- '!release/*'
85

96
concurrency:
107
group: ci-${{ github.event.pull_request.number || github.ref }}

.github/workflows/ci-python-workflow-builder-evals.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Python CI
1+
name: AI Workflow Builder Evals Python CI
22

33
on:
44
pull_request:

.github/workflows/docker-base-image.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
runs-on: ubuntu-latest
2323
strategy:
2424
matrix:
25-
node_version: ['20', '22.21.0', '24']
25+
node_version: ['20', '22.21.1', '24']
2626
steps:
2727
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2828

.github/workflows/docker-build-push.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ name: 'Docker: Build and Push'
77

88
env:
99
NODE_OPTIONS: '--max-old-space-size=7168'
10-
NODE_VERSION: '22.21.0'
10+
NODE_VERSION: '22.21.1'
1111

1212
on:
1313
schedule:
@@ -71,7 +71,7 @@ jobs:
7171
name: Build App, then Build and Push Docker Image (${{ matrix.platform }})
7272
needs: determine-build-context
7373
runs-on: ${{ matrix.runner }}
74-
timeout-minutes: 15
74+
timeout-minutes: 25
7575
strategy:
7676
matrix: ${{ fromJSON(needs.determine-build-context.outputs.build_matrix) }}
7777
outputs:

.github/workflows/playwright-test-ci.yml

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ on:
55

66
jobs:
77
# Multi-main: postgres + redis + caddy + 2 mains + 1 worker
8+
# Only runs for internal PRs (not community/fork PRs)
89
multi-main-ui:
910
name: 'Multi-Main: UI'
11+
if: ${{ !github.event.pull_request.head.repo.fork }}
1012
uses: ./.github/workflows/playwright-test-reusable.yml
1113
with:
1214
test-mode: docker-build
@@ -18,6 +20,7 @@ jobs:
1820

1921
multi-main-isolated:
2022
name: 'Multi-Main: Isolated'
23+
if: ${{ !github.event.pull_request.head.repo.fork }}
2124
uses: ./.github/workflows/playwright-test-reusable.yml
2225
with:
2326
test-mode: docker-build
@@ -27,26 +30,26 @@ jobs:
2730
workers: '1'
2831
secrets: inherit
2932

30-
# Standard: Single n8n instance with SQLite
31-
# TODO: Enable after confirmed costs with currents/blacksmith
32-
# standard-ui:
33-
# name: 'Standard: UI'
34-
# uses: ./.github/workflows/playwright-test-reusable.yml
35-
# with:
36-
# test-mode: docker-build
37-
# test-command: pnpm --filter=n8n-playwright test:container:standard:ui
38-
# shards: '[1, 2, 3, 4, 5]'
39-
# runner: blacksmith-2vcpu-ubuntu-2204
40-
# workers: '2'
41-
# secrets: inherit
33+
# Community PR tests: Local mode with SQLite (no container building, no secrets required)
34+
# Runs on GitHub-hosted runners without Currents reporting
35+
community-ui:
36+
name: 'Community: UI'
37+
if: ${{ github.event.pull_request.head.repo.fork }}
38+
uses: ./.github/workflows/playwright-test-reusable.yml
39+
with:
40+
test-mode: local
41+
test-command: pnpm --filter=n8n-playwright test:local
42+
shards: '[1, 2, 3, 4, 5]'
43+
runner: ubuntu-latest
44+
workers: '2'
4245

43-
# standard-isolated:
44-
# name: 'Standard: Isolated'
45-
# uses: ./.github/workflows/playwright-test-reusable.yml
46-
# with:
47-
# test-mode: docker-build
48-
# test-command: pnpm --filter=n8n-playwright test:container:standard:isolated
49-
# shards: '[1]'
50-
# runner: blacksmith-2vcpu-ubuntu-2204
51-
# workers: '1'
52-
# secrets: inherit
46+
community-isolated:
47+
name: 'Community: Isolated'
48+
if: ${{ github.event.pull_request.head.repo.fork }}
49+
uses: ./.github/workflows/playwright-test-reusable.yml
50+
with:
51+
test-mode: local
52+
test-command: pnpm --filter=n8n-playwright test:local:isolated
53+
shards: '[1]'
54+
runner: ubuntu-latest
55+
workers: '1'

.github/workflows/playwright-test-coverage.yml

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,21 @@ jobs:
2222

2323
- name: Setup Environment
2424
uses: ./.github/actions/setup-nodejs-blacksmith
25-
with:
26-
build-command: pnpm turbo build:playwright
25+
env:
26+
INCLUDE_TEST_CONTROLLER: 'true'
27+
28+
- name: Build Docker Image with Coverage
29+
run: pnpm build:docker:coverage
30+
env:
31+
INCLUDE_TEST_CONTROLLER: 'true'
2732

28-
- name: Build with Coverage
29-
run: pnpm --filter n8n-editor-ui build:coverage
33+
- name: Install Browsers
34+
run: pnpm turbo install-browsers:ci
3035

31-
- name: Run Coverage Tests
36+
- name: Run Container Coverage Tests
37+
id: coverage-tests
3238
run: |
33-
pnpm --filter n8n-playwright test:local \
39+
pnpm --filter n8n-playwright test:container:standard \
3440
--workers=${{ env.PLAYWRIGHT_WORKERS }}
3541
env:
3642
BUILD_WITH_COVERAGE: 'true'
@@ -40,11 +46,23 @@ jobs:
4046
QA_PERFORMANCE_METRICS_WEBHOOK_PASSWORD: ${{ secrets.QA_PERFORMANCE_METRICS_WEBHOOK_PASSWORD }}
4147

4248
- name: Generate Coverage Report
49+
if: always() && steps.coverage-tests.outcome != 'skipped'
4350
run: pnpm --filter n8n-playwright coverage:report
4451

45-
- name: Upload Coverage Report
52+
- name: Upload Coverage Report Artifact
53+
if: always()
4654
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
4755
with:
4856
name: coverage-report
4957
path: packages/testing/playwright/coverage/
5058
retention-days: 14
59+
60+
- name: Upload E2E Coverage to Codecov
61+
if: always()
62+
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
63+
with:
64+
token: ${{ secrets.CODECOV_TOKEN }}
65+
files: packages/testing/playwright/coverage/lcov.info
66+
flags: frontend-e2e
67+
name: playwright-e2e
68+
fail_ci_if_error: false

.github/workflows/playwright-test-reusable.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ env:
6464
jobs:
6565
test:
6666
runs-on: ${{ inputs.runner }}
67-
timeout-minutes: 20
67+
timeout-minutes: 30
6868
strategy:
6969
fail-fast: false
7070
matrix:

0 commit comments

Comments
 (0)