From 1e1baaf6421348a07acb9e6353982668a2feced9 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Thu, 10 Nov 2022 19:28:57 +0530 Subject: [PATCH 1/7] fix(test): Maximum timeout for each instance is 30 minutes and imrpoved quick test CI configuration --- .../workflows/playwright-test-workflow.yml | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/.github/workflows/playwright-test-workflow.yml b/.github/workflows/playwright-test-workflow.yml index f2b8b92fca..d4cddeae65 100644 --- a/.github/workflows/playwright-test-workflow.yml +++ b/.github/workflows/playwright-test-workflow.yml @@ -14,6 +14,7 @@ on: jobs: playwright: runs-on: ubuntu-20.04 + timeout-minutes: 20 steps: # Reference: https://github.com/pierotofy/set-swap-space/blob/master/action.yml - name: Set 5gb swap @@ -102,17 +103,28 @@ jobs: run: | kill -9 $(lsof -t -i:8080) npm run watch:run:playwright:pg:cyquick & - cd ../nc-gui/tests/playwright - npm run test:quick - name: Run quick server and tests (sqlite) if: ${{ inputs.db == 'sqlite' && inputs.shard == '2' }} working-directory: ./packages/nocodb run: | kill -9 $(lsof -t -i:8080) npm run watch:run:playwright:quick & - cd ../nc-gui/tests/playwright - npm run test:quick - + - name: Wait for backend & run quick tests + if: ${{ inputs.db == 'sqlite' }} + working-directory: ./packages/nc-gui/tests/playwright + run: | + while ! curl --output /dev/null --silent --head --fail http://localhost:8080; do + printf '.' + sleep 2 + done + PLAYWRIGHT_HTML_REPORT=playwright-report-quick npm run test:quick + - uses: actions/upload-artifact@v3 + if: ${{ inputs.db == 'sqlite' }} + with: + name: playwright-report-quick-${{ inputs.shard }} + path: ./packages/nc-gui/tests/playwright/playwright-report-quick/ + retention-days: 2 + - uses: actions/upload-artifact@v3 if: always() with: From f21220ac0db609b231c4dc783851415c7388233e Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Thu, 10 Nov 2022 19:31:56 +0530 Subject: [PATCH 2/7] fix(test): Dummy commit --- packages/nc-gui/tests/playwright/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/nc-gui/tests/playwright/README.md b/packages/nc-gui/tests/playwright/README.md index 898578e204..44c8b71d20 100644 --- a/packages/nc-gui/tests/playwright/README.md +++ b/packages/nc-gui/tests/playwright/README.md @@ -77,3 +77,4 @@ Page objects should be in `packages/nc-gui/tests/playwright/pages` folder. ### Verify if tests are not flaky Add `.only` to the added test and run `npm run test:repeat`. This will run the test multiple times and should show if the test is flaky. + From badc15e5f936032fbf5783b5e790da852cb67915 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Fri, 11 Nov 2022 11:43:21 +0530 Subject: [PATCH 3/7] fix(test): Added github artifact for quick tests and potential fix for playwright node module GH CI cache issue --- .github/workflows/playwright-test-workflow.yml | 18 +++++++++++++----- packages/nc-gui/tests/playwright/.gitignore | 1 + packages/nocodb/package.json | 3 +-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.github/workflows/playwright-test-workflow.yml b/.github/workflows/playwright-test-workflow.yml index d4cddeae65..ea5b388c40 100644 --- a/.github/workflows/playwright-test-workflow.yml +++ b/.github/workflows/playwright-test-workflow.yml @@ -70,14 +70,16 @@ jobs: run: npm run ci:run - name: Run backend working-directory: ./packages/nocodb - run: npm run ci:run & + run: | + npm install + npm run watch:run:playwright & > ${{ inputs.db }}_${{ inputs.shard }}_test_backend.log - name: Cache playwright npm modules uses: actions/cache@v3 id: playwright-cache with: path: | - **/playwright/node_modules - key: cache-nc-playwright-${{ hashFiles('**/playwright/package-lock.json') }} + **/nocodb/packages/nc-gui/tests/playwright/node_modules + key: cache-nc-playwright-${{ hashFiles('**/nocodb/packages/nc-gui/tests/playwright/package-lock.json') }} - name: Install dependencies if: steps.playwright-cache.outputs.cache-hit != 'true' working-directory: ./packages/nc-gui/tests/playwright @@ -108,7 +110,7 @@ jobs: working-directory: ./packages/nocodb run: | kill -9 $(lsof -t -i:8080) - npm run watch:run:playwright:quick & + npm run watch:run:playwright:quick & > quick_${{ inputs.shard }}_test_backend.log - name: Wait for backend & run quick tests if: ${{ inputs.db == 'sqlite' }} working-directory: ./packages/nc-gui/tests/playwright @@ -118,6 +120,12 @@ jobs: sleep 2 done PLAYWRIGHT_HTML_REPORT=playwright-report-quick npm run test:quick + - uses: actions/upload-artifact@v3 + if: ${{ inputs.db == 'sqlite' }} + with: + name: quick-backend-log-${{ inputs.shard }} + path: ./packages/nocodb/quick_${{ inputs.shard }}_test_backend.log + retention-days: 2 - uses: actions/upload-artifact@v3 if: ${{ inputs.db == 'sqlite' }} with: @@ -135,5 +143,5 @@ jobs: if: always() with: name: backend-logs-${{ inputs.db }}-${{ inputs.shard }} - path: ./packages/nocodb/mysql_test_backend.log + path: ./packages/nocodb/${{ inputs.db }}_${{ inputs.shard }}_test_backend.log retention-days: 2 \ No newline at end of file diff --git a/packages/nc-gui/tests/playwright/.gitignore b/packages/nc-gui/tests/playwright/.gitignore index 6f9fb63fd1..63c301ee05 100644 --- a/packages/nc-gui/tests/playwright/.gitignore +++ b/packages/nc-gui/tests/playwright/.gitignore @@ -2,6 +2,7 @@ node_modules/ /test-results/ /playwright-report/ /playwright-report copy/ +/playwright-report-quick/ /playwright/.cache/ .env output diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index 07535cceaf..7e7c1bda8d 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -46,8 +46,7 @@ "watch:run:pg": "cross-env NC_DISABLE_TELE=true EE=true nodemon -e ts,js -w ./src -x \"ts-node src/run/dockerRunPG --log-error --project tsconfig.json\"", "run": "ts-node src/run/docker", "watch:try": "nodemon -e ts,js -w ./src -x \"ts-node src/run/try --log-error --project tsconfig.json\"", - "example:docker": "ts-node src/run/docker.ts", - "ci:run": "npm install; npm run watch:run:playwright > mysql_test_backend.log" + "example:docker": "ts-node src/run/docker.ts" }, "engines": { "node": ">=8.9" From b859125903439c452bfc0470862cf27b279e0c31 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Fri, 11 Nov 2022 12:04:43 +0530 Subject: [PATCH 4/7] fix(test): Fixed issue with test backend log --- .github/workflows/playwright-test-workflow.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/playwright-test-workflow.yml b/.github/workflows/playwright-test-workflow.yml index ea5b388c40..0b25826d55 100644 --- a/.github/workflows/playwright-test-workflow.yml +++ b/.github/workflows/playwright-test-workflow.yml @@ -72,7 +72,7 @@ jobs: working-directory: ./packages/nocodb run: | npm install - npm run watch:run:playwright & > ${{ inputs.db }}_${{ inputs.shard }}_test_backend.log + npm run watch:run:playwright > ${{ inputs.db }}_${{ inputs.shard }}_test_backend.log & - name: Cache playwright npm modules uses: actions/cache@v3 id: playwright-cache @@ -110,7 +110,7 @@ jobs: working-directory: ./packages/nocodb run: | kill -9 $(lsof -t -i:8080) - npm run watch:run:playwright:quick & > quick_${{ inputs.shard }}_test_backend.log + npm run watch:run:playwright:quick > quick_${{ inputs.shard }}_test_backend.log & - name: Wait for backend & run quick tests if: ${{ inputs.db == 'sqlite' }} working-directory: ./packages/nc-gui/tests/playwright From 29a890ab9ab39fae331230eac62d32c8da41f20a Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Fri, 11 Nov 2022 13:57:18 +0530 Subject: [PATCH 5/7] fix(test): Potential fix for the issue with GI CI action action --- .github/workflows/playwright-test-workflow.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/playwright-test-workflow.yml b/.github/workflows/playwright-test-workflow.yml index 0b25826d55..c77bc876d9 100644 --- a/.github/workflows/playwright-test-workflow.yml +++ b/.github/workflows/playwright-test-workflow.yml @@ -78,8 +78,8 @@ jobs: id: playwright-cache with: path: | - **/nocodb/packages/nc-gui/tests/playwright/node_modules - key: cache-nc-playwright-${{ hashFiles('**/nocodb/packages/nc-gui/tests/playwright/package-lock.json') }} + **/packages/nc-gui/tests/playwright/node_modules + key: cache-nc-playwright-${{ hashFiles('**/packages/nc-gui/tests/playwright/package-lock.json') }} - name: Install dependencies if: steps.playwright-cache.outputs.cache-hit != 'true' working-directory: ./packages/nc-gui/tests/playwright From 5548d3f238fca2e00e10c67405f2ae1a2f9ecd09 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Fri, 11 Nov 2022 14:13:51 +0530 Subject: [PATCH 6/7] fix(test): Removed dummy commit --- packages/nc-gui/tests/playwright/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/nc-gui/tests/playwright/README.md b/packages/nc-gui/tests/playwright/README.md index 44c8b71d20..898578e204 100644 --- a/packages/nc-gui/tests/playwright/README.md +++ b/packages/nc-gui/tests/playwright/README.md @@ -77,4 +77,3 @@ Page objects should be in `packages/nc-gui/tests/playwright/pages` folder. ### Verify if tests are not flaky Add `.only` to the added test and run `npm run test:repeat`. This will run the test multiple times and should show if the test is flaky. - From 6e6a84cbb30d4d982dd6f6b440ead44e364710da Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Fri, 11 Nov 2022 14:53:31 +0530 Subject: [PATCH 7/7] fix(test): Made timeout of CI action 30 minutes --- .github/workflows/playwright-test-workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/playwright-test-workflow.yml b/.github/workflows/playwright-test-workflow.yml index c77bc876d9..c9508fd34a 100644 --- a/.github/workflows/playwright-test-workflow.yml +++ b/.github/workflows/playwright-test-workflow.yml @@ -14,7 +14,7 @@ on: jobs: playwright: runs-on: ubuntu-20.04 - timeout-minutes: 20 + timeout-minutes: 30 steps: # Reference: https://github.com/pierotofy/set-swap-space/blob/master/action.yml - name: Set 5gb swap