-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Build & lint `test-viewer`. Bump `tsc`. Add `dist` script. * Supply enabled widgets through `widgets` query param * Move e2e tests user authentication from test viewer to e2e tests, simplify test viewer startup * Use production build of test-viewer for e2e tests * Rewrite e2e tests pipeline as gh action * Remove paths filter, or else the workflow can't be made required * syntax * link workspace deps before build * don't require auth env variables when building test-viewer for e2e * attempt to fix test-viewer-dist path * print build args, correctly specify secrets * put test-viewer dist to a subdir * use the latest `mcr.microsoft.com/playwright:v1.49.0-noble` as e2e base image * stop requesting deprecated scopes * update `CONTRIBUTING.md` * put back ability to enable widgets using `IMJS_ENABLED_WIDGETS` env var * `auth` scripts should use `itwin-platform` scope * change * add missing eslint deps and fix warnings * Mention the need to build test viewer before running e2e tests
- Loading branch information
Showing
39 changed files
with
4,953 additions
and
1,821 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
name: E2E Tests | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
branches: [master] | ||
types: [opened, synchronize, reopened, ready_for_review] | ||
|
||
jobs: | ||
files-changed: | ||
runs-on: ubuntu-latest | ||
name: Detect what files changed | ||
outputs: | ||
test-viewer: ${{ steps.changes.outputs.test_viewer }} | ||
tree-widget: ${{ steps.changes.outputs.tree_widget }} | ||
property-grid: ${{ steps.changes.outputs.property_grid }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Check for file changes | ||
uses: dorny/paths-filter@v3 | ||
id: changes | ||
with: | ||
filters: | | ||
test_viewer: | ||
- 'apps/test-viewer/**' | ||
tree_widget: | ||
- 'packages/itwin/tree-widget/**' | ||
property_grid: | ||
- 'packages/itwin/property-grid/**' | ||
build-test-viewer: | ||
name: Build test-viewer | ||
needs: [files-changed] | ||
if: ${{ needs.files-changed.outputs.test-viewer == 'true' || needs.files-changed.outputs.tree-widget == 'true' || needs.files-changed.outputs.property-grid == 'true' }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Install pnpm | ||
uses: pnpm/action-setup@v3 | ||
with: | ||
version: 9 | ||
|
||
- name: Use Node.js 20 | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20 | ||
cache: 'pnpm' | ||
|
||
- name: Install dependencies | ||
run: pnpm install | ||
|
||
- name: Build dependencies | ||
run: pnpm lage build --to test-viewer | ||
|
||
- name: Build test-viewer | ||
env: | ||
IMJS_URL_PREFIX: "qa-" | ||
IMJS_BUILD_MODE: "e2e" | ||
run: pnpm run --dir apps/test-viewer dist | ||
|
||
- name: Create test-viewer artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: test-viewer-dist | ||
path: apps/test-viewer/dist | ||
|
||
run-tests-tree-widget: | ||
name: Run tree-widget tests | ||
needs: [build-test-viewer, files-changed] | ||
if: ${{ needs.files-changed.outputs.test-viewer == 'true' || needs.files-changed.outputs.tree-widget == 'true' }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Install pnpm | ||
uses: pnpm/action-setup@v3 | ||
with: | ||
version: 9 | ||
|
||
- name: Use Node.js 20 | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20 | ||
cache: 'pnpm' | ||
|
||
- name: Install dependencies | ||
run: pnpm install -D --filter ./packages/itwin/tree-widget | ||
|
||
- name: Download test-viewer artifact | ||
id: test-viewer-artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: test-viewer-dist | ||
path: test-viewer-dist | ||
|
||
- name: Run tests in Docker | ||
env: | ||
CI: true | ||
TEST_VIEWER_DIST: ${{ steps.test-viewer-artifact.outputs.download-path }} | ||
IMJS_AUTH_CLIENT_CLIENT_ID: ${{ secrets.IMJS_AUTH_CLIENT_CLIENT_ID }} | ||
IMJS_USER_EMAIL: ${{ secrets.IMJS_USER_EMAIL }} | ||
IMJS_USER_PASSWORD: ${{ secrets.IMJS_USER_PASSWORD }} | ||
run: pnpm run --dir packages/itwin/tree-widget test:e2e | ||
|
||
- name: Publish test results artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: tree-widget-e2e-test-results | ||
path: packages/itwin/tree-widget/e2e-out | ||
|
||
run-tests-property-grid: | ||
name: Run property-grid tests | ||
needs: [build-test-viewer, files-changed] | ||
if: ${{ needs.files-changed.outputs.test-viewer == 'true' || needs.files-changed.outputs.property-grid == 'true' }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Install pnpm | ||
uses: pnpm/action-setup@v3 | ||
with: | ||
version: 9 | ||
|
||
- name: Use Node.js 20 | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20 | ||
cache: 'pnpm' | ||
|
||
- name: Install dependencies | ||
run: pnpm install -D --filter ./packages/itwin/property-grid | ||
|
||
- name: Download test-viewer artifact | ||
id: test-viewer-artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: test-viewer-dist | ||
path: test-viewer-dist | ||
|
||
- name: Run tests in Docker | ||
env: | ||
CI: true | ||
TEST_VIEWER_DIST: ${{ steps.test-viewer-artifact.outputs.download-path }} | ||
IMJS_AUTH_CLIENT_CLIENT_ID: ${{ secrets.IMJS_AUTH_CLIENT_CLIENT_ID }} | ||
IMJS_USER_EMAIL: ${{ secrets.IMJS_USER_EMAIL }} | ||
IMJS_USER_PASSWORD: ${{ secrets.IMJS_USER_PASSWORD }} | ||
run: pnpm run --dir packages/itwin/property-grid test:e2e | ||
|
||
- name: Publish test results artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: property-grid-e2e-test-results | ||
path: packages/itwin/property-grid/e2e-out |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,7 @@ | |
/coverage | ||
|
||
# production | ||
/build | ||
/dist | ||
|
||
# misc | ||
.DS_Store | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
/*--------------------------------------------------------------------------------------------- | ||
* Copyright (c) Bentley Systems, Incorporated. All rights reserved. | ||
* See LICENSE.md in the project root for license terms and full copyright notice. | ||
*--------------------------------------------------------------------------------------------*/ | ||
const iTwinPlugin = require("@itwin/eslint-plugin"); | ||
const reactPlugin = require("eslint-plugin-react"); | ||
const eslintConfigPrettier = require("eslint-config-prettier"); | ||
const unusedImports = require("eslint-plugin-unused-imports"); | ||
|
||
module.exports = [ | ||
{ | ||
files: ["**/*.{ts,tsx}"], | ||
...iTwinPlugin.configs.uiConfig, | ||
rules: { | ||
...iTwinPlugin.configs.uiConfig.rules, | ||
"@itwin/no-internal": ["error"], | ||
}, | ||
}, | ||
{ | ||
files: ["**/*.{ts,tsx}"], | ||
rules: { | ||
...reactPlugin.configs["jsx-runtime"].rules, | ||
}, | ||
}, | ||
{ | ||
plugins: { | ||
"unused-imports": unusedImports, | ||
}, | ||
files: ["**/*.{ts,tsx}"], | ||
rules: { | ||
"no-duplicate-imports": "off", | ||
"import/no-duplicates": "error", | ||
"object-curly-spacing": ["error", "always"], | ||
"@typescript-eslint/consistent-type-imports": "error", | ||
"@typescript-eslint/no-unused-vars": "off", | ||
"unused-imports/no-unused-imports": "error", | ||
"unused-imports/no-unused-vars": ["error", { vars: "all", varsIgnorePattern: "^_", args: "after-used", argsIgnorePattern: "^_" }], | ||
curly: ["error", "all"], | ||
}, | ||
}, | ||
eslintConfigPrettier, | ||
{ | ||
files: ["**/*.{ts,tsx}"], | ||
rules: { | ||
"no-console": "off", | ||
}, | ||
}, | ||
]; |
Oops, something went wrong.