@@ -87,37 +87,72 @@ jobs:
8787 with :
8888 build-packages : ' true'
8989
90+ - name : Validate inputs
91+ env :
92+ APP_NAME : ${{ inputs.app-name }}
93+ WORLD_ID : ${{ inputs.world-id }}
94+ WORLD_PACKAGE : ${{ inputs.world-package }}
95+ run : |
96+ if [[ ! "$APP_NAME" =~ ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ ]]; then
97+ echo "Invalid app-name: $APP_NAME" >&2
98+ exit 1
99+ fi
100+ if [[ ! "$WORLD_ID" =~ ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ ]]; then
101+ echo "Invalid world-id: $WORLD_ID" >&2
102+ exit 1
103+ fi
104+ if [[ ! "$WORLD_PACKAGE" =~ ^(@[a-zA-Z0-9][a-zA-Z0-9_.-]*/)?[a-zA-Z0-9][a-zA-Z0-9_.-]*(@[a-zA-Z0-9][a-zA-Z0-9_.+-]*)?$ ]]; then
105+ echo "Invalid world-package: $WORLD_PACKAGE" >&2
106+ exit 1
107+ fi
108+
90109 - name : Install ${{ inputs.world-name }} World
91- run : pnpm --filter ${{ inputs.app-name }} add ${{ inputs.world-package }}
110+ env :
111+ APP_NAME : ${{ inputs.app-name }}
112+ WORLD_PACKAGE : ${{ inputs.world-package }}
113+ run : pnpm --filter "$APP_NAME" add "$WORLD_PACKAGE"
92114
93115 - name : Run setup command
94116 if : ${{ inputs.setup-command != '' }}
95- run : ${{ inputs.setup-command }}
96- working-directory : workbench/${{ inputs.app-name }}
117+ env :
118+ APP_NAME : ${{ inputs.app-name }}
119+ SETUP_COMMAND : ${{ inputs.setup-command }}
120+ run : |
121+ cd "workbench/$APP_NAME"
122+ eval "$SETUP_COMMAND"
97123
98124 - name : Resolve symlinks
99- run : ./scripts/resolve-symlinks.sh workbench/${{ inputs.app-name }}
125+ env :
126+ APP_NAME : ${{ inputs.app-name }}
127+ run : ./scripts/resolve-symlinks.sh "workbench/$APP_NAME"
100128
101129 - name : Set environment variables
130+ env :
131+ ENV_VARS_JSON : ${{ inputs.env-vars }}
102132 run : |
103- echo '${{ inputs.env-vars }}' | jq -r 'to_entries[] | "\(.key)=\(.value)"' >> $GITHUB_ENV
133+ printf '%s' "$ENV_VARS_JSON" | jq -r 'to_entries[] | "\(.key)=\(.value)"' >> " $GITHUB_ENV"
104134
105135 - name : Run E2E Tests
106- run : |
107- cd workbench/${{ inputs.app-name }} && pnpm dev &
108- echo "Waiting for dev server to start..." && sleep 15
109- pnpm vitest run packages/core/e2e/dev.test.ts --reporter=default --reporter=json --reporter=./packages/core/e2e/github-reporter.ts --outputFile=e2e-community-${{ inputs.world-id }}-dev.json || true
110- sleep 10
111- pnpm vitest run packages/core/e2e/e2e.test.ts --reporter=default --reporter=json --reporter=./packages/core/e2e/github-reporter.ts --outputFile=e2e-community-${{ inputs.world-id }}.json || true
112136 env :
113137 NODE_OPTIONS : " --enable-source-maps"
114138 APP_NAME : ${{ inputs.app-name }}
139+ WORLD_ID : ${{ inputs.world-id }}
115140 DEPLOYMENT_URL : " http://localhost:3000"
116- DEV_TEST_CONFIG : ' {"name":"${{ inputs.app-name }}","project":"workbench-${{ inputs.app-name }}-workflow","generatedStepPath":"app/.well-known/workflow/v1/step/route.js","generatedWorkflowPath":"app/.well-known/workflow/v1/flow/route.js","apiFilePath":"app/api/chat/route.ts","apiFileImportPath":"../../.."}'
141+ run : |
142+ DEV_TEST_CONFIG="$(jq -nc --arg name "$APP_NAME" '{name:$name,project:"workbench-\($name)-workflow",generatedStepPath:"app/.well-known/workflow/v1/step/route.js",generatedWorkflowPath:"app/.well-known/workflow/v1/flow/route.js",apiFilePath:"app/api/chat/route.ts",apiFileImportPath:"../../.."}')"
143+ export DEV_TEST_CONFIG
144+ cd "workbench/$APP_NAME" && pnpm dev &
145+ cd "$GITHUB_WORKSPACE"
146+ echo "Waiting for dev server to start..." && sleep 15
147+ pnpm vitest run packages/core/e2e/dev.test.ts --reporter=default --reporter=json --reporter=./packages/core/e2e/github-reporter.ts "--outputFile=e2e-community-$WORLD_ID-dev.json" || true
148+ sleep 10
149+ pnpm vitest run packages/core/e2e/e2e.test.ts --reporter=default --reporter=json --reporter=./packages/core/e2e/github-reporter.ts "--outputFile=e2e-community-$WORLD_ID.json" || true
117150
118151 - name : Generate E2E summary
119152 if : always()
120- run : node .github/scripts/aggregate-e2e-results.js . --job-name "E2E Tests (${{ inputs.world-name }})" >> $GITHUB_STEP_SUMMARY || true
153+ env :
154+ WORLD_NAME : ${{ inputs.world-name }}
155+ run : node .github/scripts/aggregate-e2e-results.js . --job-name "E2E Tests ($WORLD_NAME)" >> $GITHUB_STEP_SUMMARY || true
121156
122157 - name : Upload E2E results
123158 uses : actions/upload-artifact@v4
0 commit comments