diff --git a/.github/workflows/demos_visual_tests.yml b/.github/workflows/demos_visual_tests.yml index 1bd4cd7246f9..886c9f3a122f 100644 --- a/.github/workflows/demos_visual_tests.yml +++ b/.github/workflows/demos_visual_tests.yml @@ -69,28 +69,13 @@ jobs: node ./tools/scripts/performance_log.js & pnpm exec nx build devextreme - prepare-matrix: - name: Prepare testcafe matrix - runs-on: ubuntu-latest - needs: check-should-run - outputs: - strategy: ${{ steps.set.outputs.strategy }} - steps: - - name: Build matrix - id: set - run: | - if [ "${{ needs.check-should-run.outputs.should-run }}" = "true" ]; then - echo 'strategy=["screenshots","accessibility"]' >> $GITHUB_OUTPUT - else - echo 'strategy=["accessibility"]' >> $GITHUB_OUTPUT - fi - testcafe: - needs: [prepare-matrix, build] + needs: [check-should-run, build] + if: needs.check-should-run.outputs.should-run == 'true' strategy: fail-fast: false matrix: - STRATEGY: ${{ fromJSON(needs.prepare-matrix.outputs.strategy) }} + STRATEGY: [screenshots, accessibility] THEME: ['generic.light', 'material.blue.light', 'fluent.blue.light'] CONSTEL: [jquery(1/4), jquery(2/4), jquery(3/4), jquery(4/4)] env: diff --git a/.github/workflows/testcafe_tests.yml b/.github/workflows/testcafe_tests.yml index 1a58d74dea87..1f8b341041c7 100644 --- a/.github/workflows/testcafe_tests.yml +++ b/.github/workflows/testcafe_tests.yml @@ -28,6 +28,8 @@ jobs: build: name: build + needs: check-should-run + if: needs.check-should-run.outputs.should-run == 'true' runs-on: devextreme-shr2 timeout-minutes: 15 @@ -82,110 +84,96 @@ jobs: path: ./packages/devextreme/artifacts.zip retention-days: 1 - prepare-matrix: - name: Prepare testcafe matrix - runs-on: ubuntu-latest - needs: check-should-run - outputs: - args: ${{ steps.set.outputs.args }} - steps: - - name: Build matrix - id: set - run: | - ACCESSIBILITY='{"componentFolder":"accessibility/common","name":"accessibility (1/7)","indices":"1/7"}, - {"componentFolder":"accessibility/common","name":"accessibility (2/7)","indices":"2/7"}, - {"componentFolder":"accessibility/common","name":"accessibility (3/7)","indices":"3/7"}, - {"componentFolder":"accessibility/common","name":"accessibility (4/7)","indices":"4/7"}, - {"componentFolder":"accessibility/common","name":"accessibility (5/7)","indices":"5/7"}, - {"componentFolder":"accessibility/common","name":"accessibility (6/7)","indices":"6/7"}, - {"componentFolder":"accessibility/common","name":"accessibility (7/7)","indices":"7/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - material (1/7)","theme":"material.blue.light","indices":"1/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - material (2/7)","theme":"material.blue.light","indices":"2/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - material (3/7)","theme":"material.blue.light","indices":"3/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - material (4/7)","theme":"material.blue.light","indices":"4/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - material (5/7)","theme":"material.blue.light","indices":"5/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - material (6/7)","theme":"material.blue.light","indices":"6/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - material (7/7)","theme":"material.blue.light","indices":"7/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - fluent (1/7)","theme":"fluent.blue.light","indices":"1/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - fluent (2/7)","theme":"fluent.blue.light","indices":"2/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - fluent (3/7)","theme":"fluent.blue.light","indices":"3/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - fluent (4/7)","theme":"fluent.blue.light","indices":"4/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - fluent (5/7)","theme":"fluent.blue.light","indices":"5/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - fluent (6/7)","theme":"fluent.blue.light","indices":"6/7"}, - {"componentFolder":"accessibility/common","name":"accessibility - fluent (7/7)","theme":"fluent.blue.light","indices":"7/7"}' - REST='{"componentFolder":"common","name":"common"}, - {"componentFolder":"common","name":"common - material","theme":"material.blue.light"}, - {"componentFolder":"common","name":"common - fluent","theme":"fluent.blue.light"}, - {"componentFolder":"chat","name":"chat"}, - {"componentFolder":"chat","name":"chat - material","theme":"material.blue.light"}, - {"componentFolder":"chat","name":"chat - fluent","theme":"fluent.blue.light"}, - {"componentFolder":"treeList","name":"treeList","concurrency":1}, - {"componentFolder":"dataGrid/common","name":"dataGrid / common (1/5)","indices":"1/5"}, - {"componentFolder":"dataGrid/common","name":"dataGrid / common (2/5)","indices":"2/5"}, - {"componentFolder":"dataGrid/common","name":"dataGrid / common (3/5)","indices":"3/5"}, - {"componentFolder":"dataGrid/common","name":"dataGrid / common (4/5)","indices":"4/5"}, - {"componentFolder":"dataGrid/common","name":"dataGrid / common (5/5)","indices":"5/5"}, - {"componentFolder":"dataGrid/sticky/common","name":"dataGrid / sticky common"}, - {"componentFolder":"dataGrid/sticky/fixed","name":"dataGrid / sticky (1/3)","indices":"1/3"}, - {"componentFolder":"dataGrid/sticky/fixed","name":"dataGrid / sticky (2/3)","indices":"2/3"}, - {"componentFolder":"dataGrid/sticky/fixed","name":"dataGrid / sticky (3/3)","indices":"3/3"}, - {"componentFolder":"pivotGrid","name":"pivotGrid","concurrency":1}, - {"componentFolder":"pivotGrid","name":"pivotGrid - material","theme":"material.blue.light","concurrency":1}, - {"componentFolder":"pivotGrid","name":"pivotGrid - fluent","theme":"fluent.blue.light","concurrency":1}, - {"componentFolder":"scheduler/common","name":"scheduler / common (1/6)","indices":"1/6"}, - {"componentFolder":"scheduler/common","name":"scheduler / common (2/6)","indices":"2/6"}, - {"componentFolder":"scheduler/common","name":"scheduler / common (3/6)","indices":"3/6"}, - {"componentFolder":"scheduler/common","name":"scheduler / common (4/6)","indices":"4/6"}, - {"componentFolder":"scheduler/common","name":"scheduler / common (5/6)","indices":"5/6"}, - {"componentFolder":"scheduler/common","name":"scheduler / common (6/6)","indices":"6/6"}, - {"componentFolder":"scheduler/viewOffset/common","name":"scheduler / offset"}, - {"componentFolder":"scheduler/viewOffset/markup","name":"scheduler / offset markups"}, - {"componentFolder":"scheduler/timezones","name":"scheduler / timezones (Europe/Berlin)","timezone":"Europe/Berlin"}, - {"componentFolder":"scheduler/timezones","name":"scheduler / timezones (America/Los_Angeles)","timezone":"America/Los_Angeles"}, - {"componentFolder":"form","name":"form (1/2)","indices":"1/2"}, - {"componentFolder":"form","name":"form (2/2)","indices":"2/2"}, - {"componentFolder":"form","name":"form - material (1/2)","theme":"material.blue.light","indices":"1/2"}, - {"componentFolder":"form","name":"form - material (2/2)","theme":"material.blue.light","indices":"2/2"}, - {"componentFolder":"form","name":"form - fluent (1/2)","theme":"fluent.blue.light","indices":"1/2"}, - {"componentFolder":"form","name":"form - fluent (2/2)","theme":"fluent.blue.light","indices":"2/2"}, - {"componentFolder":"editors","name":"editors (1/3)","indices":"1/3"}, - {"componentFolder":"editors","name":"editors (2/3)","indices":"2/3"}, - {"componentFolder":"editors","name":"editors (3/3)","indices":"3/3"}, - {"componentFolder":"editors","name":"editors - material (1/3)","indices":"1/3","theme":"material.blue.light"}, - {"componentFolder":"editors","name":"editors - material (2/3)","indices":"2/3","theme":"material.blue.light"}, - {"componentFolder":"editors","name":"editors - material (3/3)","indices":"3/3","theme":"material.blue.light"}, - {"componentFolder":"editors","name":"editors - fluent (1/3)","indices":"1/3","theme":"fluent.blue.light"}, - {"componentFolder":"editors","name":"editors - fluent (2/3)","indices":"2/3","theme":"fluent.blue.light"}, - {"componentFolder":"editors","name":"editors - fluent (3/3)","indices":"3/3","theme":"fluent.blue.light"}, - {"componentFolder":"htmlEditor","name":"htmlEditor","concurrency":1}, - {"componentFolder":"htmlEditor","name":"htmlEditor - material","theme":"material.blue.light","concurrency":1}, - {"componentFolder":"htmlEditor","name":"htmlEditor - fluent","theme":"fluent.blue.light","concurrency":1}, - {"componentFolder":"navigation","name":"navigation"}, - {"componentFolder":"navigation","name":"navigation - material","theme":"material.blue.light"}, - {"componentFolder":"navigation","name":"navigation - fluent","theme":"fluent.blue.light"}, - {"componentFolder":"fileManager","name":"fileManager"}, - {"componentFolder":"fileManager","name":"fileManager - material","theme":"material.blue.light"}, - {"componentFolder":"fileManager","name":"fileManager - fluent","theme":"fluent.blue.light"}, - {"componentFolder":"filterBuilder","name":"filterBuilder"}, - {"componentFolder":"filterBuilder","name":"filterBuilder - material","theme":"material.blue.light"}, - {"componentFolder":"filterBuilder","name":"filterBuilder - fluent","theme":"fluent.blue.light"}, - {"componentFolder":"pagination","name":"pagination"}, - {"componentFolder":"pagination","name":"pagination - fluent","theme":"fluent.blue.light"}' - if [ "${{ needs.check-should-run.outputs.should-run }}" = "true" ]; then - ARGS="[$ACCESSIBILITY,$REST]" - else - ARGS="[$ACCESSIBILITY]" - fi - ARGS=$(echo "$ARGS" | tr -d '\n' | tr -s ' ') - echo "args=$ARGS" >> $GITHUB_OUTPUT - testcafe: name: ${{ matrix.ARGS.name }} - needs: [prepare-matrix, build] + needs: [check-should-run, build] + if: needs.check-should-run.outputs.should-run == 'true' strategy: fail-fast: false matrix: - ARGS: ${{ fromJSON(needs.prepare-matrix.outputs.args) }} + ARGS: [ + { componentFolder: "accessibility/common", name: "accessibility (1/7)", indices: "1/7" }, + { componentFolder: "accessibility/common", name: "accessibility (2/7)", indices: "2/7" }, + { componentFolder: "accessibility/common", name: "accessibility (3/7)", indices: "3/7" }, + { componentFolder: "accessibility/common", name: "accessibility (4/7)", indices: "4/7" }, + { componentFolder: "accessibility/common", name: "accessibility (5/7)", indices: "5/7" }, + { componentFolder: "accessibility/common", name: "accessibility (6/7)", indices: "6/7" }, + { componentFolder: "accessibility/common", name: "accessibility (7/7)", indices: "7/7" }, + { componentFolder: "accessibility/common", name: "accessibility - material (1/7)", theme: "material.blue.light", indices: "1/7" }, + { componentFolder: "accessibility/common", name: "accessibility - material (2/7)", theme: "material.blue.light", indices: "2/7" }, + { componentFolder: "accessibility/common", name: "accessibility - material (3/7)", theme: "material.blue.light", indices: "3/7" }, + { componentFolder: "accessibility/common", name: "accessibility - material (4/7)", theme: "material.blue.light", indices: "4/7" }, + { componentFolder: "accessibility/common", name: "accessibility - material (5/7)", theme: "material.blue.light", indices: "5/7" }, + { componentFolder: "accessibility/common", name: "accessibility - material (6/7)", theme: "material.blue.light", indices: "6/7" }, + { componentFolder: "accessibility/common", name: "accessibility - material (7/7)", theme: "material.blue.light", indices: "7/7" }, + { componentFolder: "accessibility/common", name: "accessibility - fluent (1/7)", theme: "fluent.blue.light", indices: "1/7" }, + { componentFolder: "accessibility/common", name: "accessibility - fluent (2/7)", theme: "fluent.blue.light", indices: "2/7" }, + { componentFolder: "accessibility/common", name: "accessibility - fluent (3/7)", theme: "fluent.blue.light", indices: "3/7" }, + { componentFolder: "accessibility/common", name: "accessibility - fluent (4/7)", theme: "fluent.blue.light", indices: "4/7" }, + { componentFolder: "accessibility/common", name: "accessibility - fluent (5/7)", theme: "fluent.blue.light", indices: "5/7" }, + { componentFolder: "accessibility/common", name: "accessibility - fluent (6/7)", theme: "fluent.blue.light", indices: "6/7" }, + { componentFolder: "accessibility/common", name: "accessibility - fluent (7/7)", theme: "fluent.blue.light", indices: "7/7" }, + { componentFolder: "common", name: "common" }, + { componentFolder: "common", name: "common - material", theme: 'material.blue.light' }, + { componentFolder: "common", name: "common - fluent", theme: 'fluent.blue.light' }, + { componentFolder: "chat", name: "chat" }, + { componentFolder: "chat", name: "chat - material", theme: 'material.blue.light' }, + { componentFolder: "chat", name: "chat - fluent", theme: 'fluent.blue.light' }, + { componentFolder: "treeList", name: "treeList", concurrency: 1 }, + { componentFolder: "dataGrid/common", name: "dataGrid / common (1/5)", indices: "1/5" }, + { componentFolder: "dataGrid/common", name: "dataGrid / common (2/5)", indices: "2/5" }, + { componentFolder: "dataGrid/common", name: "dataGrid / common (3/5)", indices: "3/5" }, + { componentFolder: "dataGrid/common", name: "dataGrid / common (4/5)", indices: "4/5" }, + { componentFolder: "dataGrid/common", name: "dataGrid / common (5/5)", indices: "5/5" }, + { componentFolder: "dataGrid/sticky/common", name: "dataGrid / sticky common" }, + { componentFolder: "dataGrid/sticky/fixed", name: "dataGrid / sticky (1/3)", indices: "1/3" }, + { componentFolder: "dataGrid/sticky/fixed", name: "dataGrid / sticky (2/3)", indices: "2/3" }, + { componentFolder: "dataGrid/sticky/fixed", name: "dataGrid / sticky (3/3)", indices: "3/3" }, + { componentFolder: "pivotGrid", name: "pivotGrid", concurrency: 1 }, + { componentFolder: "pivotGrid", name: "pivotGrid - material", theme: 'material.blue.light', concurrency: 1 }, + { componentFolder: "pivotGrid", name: "pivotGrid - fluent", theme: 'fluent.blue.light', concurrency: 1 }, + { componentFolder: "scheduler/common", name: "scheduler / common (1/6)", indices: "1/6" }, + { componentFolder: "scheduler/common", name: "scheduler / common (2/6)", indices: "2/6" }, + { componentFolder: "scheduler/common", name: "scheduler / common (3/6)", indices: "3/6" }, + { componentFolder: "scheduler/common", name: "scheduler / common (4/6)", indices: "4/6" }, + { componentFolder: "scheduler/common", name: "scheduler / common (5/6)", indices: "5/6" }, + { componentFolder: "scheduler/common", name: "scheduler / common (6/6)", indices: "6/6" }, + { componentFolder: "scheduler/viewOffset/common", name: "scheduler / offset" }, + { componentFolder: "scheduler/viewOffset/markup", name: "scheduler / offset markups" }, + { componentFolder: "scheduler/timezones", name: "scheduler / timezones (Europe/Berlin)", timezone: "Europe/Berlin" }, + { componentFolder: "scheduler/timezones", name: "scheduler / timezones (America/Los_Angeles)", timezone: "America/Los_Angeles" }, + { componentFolder: "form", name: "form (1/2)", indices: "1/2" }, + { componentFolder: "form", name: "form (2/2)", indices: "2/2" }, + { componentFolder: "form", name: "form - material (1/2)", theme: 'material.blue.light', indices: "1/2" }, + { componentFolder: "form", name: "form - material (2/2)", theme: 'material.blue.light', indices: "2/2" }, + { componentFolder: "form", name: "form - fluent (1/2)", theme: 'fluent.blue.light', indices: "1/2" }, + { componentFolder: "form", name: "form - fluent (2/2)", theme: 'fluent.blue.light', indices: "2/2" }, + { componentFolder: "editors", name: "editors (1/3)", indices: "1/3" }, + { componentFolder: "editors", name: "editors (2/3)", indices: "2/3" }, + { componentFolder: "editors", name: "editors (3/3)", indices: "3/3" }, + { componentFolder: "editors", name: "editors - material (1/3)", indices: "1/3", theme: 'material.blue.light' }, + { componentFolder: "editors", name: "editors - material (2/3)", indices: "2/3", theme: 'material.blue.light' }, + { componentFolder: "editors", name: "editors - material (3/3)", indices: "3/3", theme: 'material.blue.light' }, + { componentFolder: "editors", name: "editors - fluent (1/3)", indices: "1/3", theme: 'fluent.blue.light' }, + { componentFolder: "editors", name: "editors - fluent (2/3)", indices: "2/3", theme: 'fluent.blue.light' }, + { componentFolder: "editors", name: "editors - fluent (3/3)", indices: "3/3", theme: 'fluent.blue.light' }, + { componentFolder: "htmlEditor", name: "htmlEditor", concurrency: 1 }, + { componentFolder: "htmlEditor", name: "htmlEditor - material", theme: 'material.blue.light', concurrency: 1 }, + { componentFolder: "htmlEditor", name: "htmlEditor - fluent", theme: 'fluent.blue.light', concurrency: 1 }, + { componentFolder: "navigation", name: "navigation" }, + { componentFolder: "navigation", name: "navigation - material", theme: 'material.blue.light' }, + { componentFolder: "navigation", name: "navigation - fluent", theme: 'fluent.blue.light' }, + { componentFolder: "fileManager", name: "fileManager" }, + { componentFolder: "fileManager", name: "fileManager - material", theme: 'material.blue.light' }, + { componentFolder: "fileManager", name: "fileManager - fluent", theme: 'fluent.blue.light' }, + { componentFolder: "filterBuilder", name: "filterBuilder" }, + { componentFolder: "filterBuilder", name: "filterBuilder - material", theme: 'material.blue.light' }, + { componentFolder: "filterBuilder", name: "filterBuilder - fluent", theme: 'fluent.blue.light' }, + { componentFolder: "pagination", name: "pagination" }, + # TODO Chrome133: skipped during chrome update + # { componentFolder: "pagination", name: "pagination - material", theme: 'material.blue.light' }, + { componentFolder: "pagination", name: "pagination - fluent", theme: 'fluent.blue.light' }, + ] runs-on: devextreme-shr2 timeout-minutes: 45