Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
cf2c46a
feat: add rslib monorepo harness runner
cursoragent Feb 16, 2026
018a831
test: add coverage for rslib harness resolver
cursoragent Feb 16, 2026
e5e5a1b
test: expand rslib harness parser and args coverage
cursoragent Feb 16, 2026
47d7921
docs: add rslib harness usage examples
cursoragent Feb 16, 2026
bbd8664
ci: run rslib harness tests in ci-local jobs
cursoragent Feb 16, 2026
6c8b8e6
chore: add rslib harness list and inspect scripts
cursoragent Feb 16, 2026
1ab9fef
docs: document harness inspect command usage
cursoragent Feb 16, 2026
7ac934d
fix: use fast-glob for node20 harness compatibility
cursoragent Feb 16, 2026
217b4b6
ci: verify rslib harness coverage in local pipeline
cursoragent Feb 16, 2026
fae10d4
test: cover harness ignore patterns
cursoragent Feb 16, 2026
758f2e1
feat: add json output mode for harness listing
cursoragent Feb 16, 2026
af1ac71
test: validate harness json list output
cursoragent Feb 16, 2026
a065fd5
test: add harness dedupe and filter failure coverage
cursoragent Feb 16, 2026
20e992a
ci: run harness checks in build-and-test workflow
cursoragent Feb 16, 2026
290057d
ci: verify harness checks are wired in workflows
cursoragent Feb 16, 2026
3415554
feat: make json mode auto-enable project listing
cursoragent Feb 16, 2026
7980100
feat: emit structured command plans for json dry-runs
cursoragent Feb 16, 2026
99da960
test: enforce deterministic harness project ordering
cursoragent Feb 16, 2026
77d329b
test: assert sorted json dry-run command plans
cursoragent Feb 16, 2026
a044010
fix: require dry-run for json command output
cursoragent Feb 16, 2026
200ff0a
fix: validate harness config entry shapes
cursoragent Feb 16, 2026
af59ac2
test: expand parser and filter validation coverage
cursoragent Feb 16, 2026
980a43d
fix: reject unknown harness config keys
cursoragent Feb 16, 2026
15ae47b
test: broaden parseCliArgs failure case coverage
cursoragent Feb 16, 2026
66b1040
test: cover nested schema validation errors
cursoragent Feb 16, 2026
8067503
fix: validate harness root type
cursoragent Feb 16, 2026
efdd0f3
fix: reject array defaults in harness config
cursoragent Feb 16, 2026
32bb5ea
feat: support inline config and root options
cursoragent Feb 16, 2026
3673ee9
fix: validate explicit project config filenames
cursoragent Feb 16, 2026
b46cf17
fix: harden object entry path validation
cursoragent Feb 16, 2026
dc7c13c
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 19, 2026
cd82e5f
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 19, 2026
6084623
Merge remote-tracking branch 'origin/main' into cursor/rslib-configur…
ScriptedAlchemy Feb 24, 2026
a5ecc0e
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 25, 2026
70504ed
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 25, 2026
fbe818f
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 26, 2026
e8ca8e4
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 26, 2026
f379fff
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 27, 2026
668b0cd
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 27, 2026
90a3efe
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 28, 2026
9f0c1db
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Feb 28, 2026
29529f7
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Mar 2, 2026
ebce164
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Mar 3, 2026
2a43b3c
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Mar 5, 2026
6ce0f52
Merge branch 'main' into cursor/rslib-configuration-harness-cdc5
ScriptedAlchemy Mar 9, 2026
41149ed
Merge remote-tracking branch 'origin/main' into cursor/rslib-configur…
ScriptedAlchemy Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 49 additions & 20 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ jobs:
with:
fetch-depth: 0

- name: Cache Tool Downloads
uses: actions/cache@v5
with:
path: ~/.cache
key: ${{ runner.os }}-toolcache-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-toolcache-

- name: Setup pnpm
uses: pnpm/action-setup@v4

Expand All @@ -34,26 +42,32 @@ jobs:
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'

- name: Install dependencies
- name: Remove cached node_modules
run: rm -rf node_modules .nx

- name: Set Playwright cache status
run: |
if [ -d "$HOME/.cache/ms-playwright" ] || [ -d "$HOME/.cache/Cypress" ]; then
echo "PLAYWRIGHT_CACHE_HIT=true" >> "$GITHUB_ENV"
else
echo "PLAYWRIGHT_CACHE_HIT=false" >> "$GITHUB_ENV"
fi

- name: Set Nx SHA
uses: nrwl/nx-set-shas@v4

- name: Install Dependencies
run: pnpm install --frozen-lockfile

- name: Restore Turborepo cache
uses: actions/cache/restore@v4
with:
path: |
.turbo
**/.turbo
key: ${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-${{ github.ref_name }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-${{ github.ref_name }}-
${{ runner.os }}-turbo-${{ github.workflow }}-${{ github.job }}-
${{ runner.os }}-turbo-
- name: Install Playwright Browsers
run: pnpm exec playwright install --force

- name: Install Cypress
# if: steps.browsers-cache.outputs.cache-hit != 'true'
run: npx cypress install

- name: Check code format
run: node tools/scripts/check-format-changed.mjs
- name: Check Code Format
run: npx nx format:check

- name: Verify Rslib Template Publint Wiring
run: node packages/create-module-federation/scripts/verify-rslib-templates.mjs
Expand All @@ -64,11 +78,22 @@ jobs:
- name: Verify Publint Workflow Coverage
run: node tools/scripts/verify-publint-workflow-coverage.mjs

- name: Verify Turbo Conventions
run: pnpm run verify:turbo
- name: Run Rslib Harness Tests
run: pnpm run test:rslib-harness

- name: Verify Rslib Harness Coverage
run: pnpm run verify:rslib-harness

- name: Verify Rslib Harness Workflow Coverage
run: pnpm run verify:rslib-harness:workflow

- name: Build packages
run: pnpm run build:packages
- name: Print Number of CPU Cores
run: nproc

- name: Run Build for All
run: |
npx nx run-many --targets=build --projects=tag:type:pkg --parallel=4 --skip-nx-cache
npx nx run-many --targets=build --projects=tag:type:pkg --parallel=4

- name: Check Package Publishing Compatibility
run: |
Expand All @@ -84,8 +109,12 @@ jobs:
fi
done

- name: Run affected package tests
run: node tools/scripts/run-affected-package-tests.mjs
- name: Warm Nx Cache
run: npx nx run-many --targets=build --projects=tag:type:pkg --parallel=4

- name: Run Affected Test
timeout-minutes: 10
run: npx nx affected -t test --parallel=3 --exclude='*,!tag:type:pkg'

e2e-modern:
needs: checkout-install
Expand Down
56 changes: 56 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,62 @@ To get started with Module Federation, see the [Quick Start](https://module-fede

Come and chat with us on [Discussions](https://github.com/module-federation/universe/discussions) or [Discord](https://discord.gg/n69NnT3ACV)! The Module federation team and users are active there, and we're always looking for contributions.

## 🧪 Rslib Monorepo Harness

This repository includes a workspace-level Rslib harness that can orchestrate
multiple `rslib.config.*` projects from the repo root (including nested project
definitions via harness config files).

Quick examples:

- List resolved projects:

```bash
pnpm run rslib:harness list
```

- List resolved projects as JSON:

```bash
pnpm run rslib:harness list --json
```

`--json` also implies list output when used with other commands.

- Emit a machine-readable dry-run command plan:

```bash
pnpm run rslib:harness:build --project create-module-federation --json --dry-run
```

For non-`list` commands, `--json` is only supported with `--dry-run`.

- Build a single project by name/path filter:

```bash
pnpm run rslib:harness:build --project create-module-federation
```

- Show commands without executing:

```bash
pnpm run rslib:harness:build --project create-module-federation --dry-run
```

- Inspect one project's generated config outputs:

```bash
pnpm run rslib:harness:inspect --project create-module-federation
```

- Verify harness coverage against repo Rslib configs:

```bash
pnpm run verify:rslib-harness
```

The default root harness config is `rslib.harness.config.mjs`.

## 🤝 Contribution

> New contributors welcome!
Expand Down
Loading
Loading