Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: Migrate Testing Framework from Jest to Vitest #2457

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
17baee2
configuring vitest
prayanshchh Nov 20, 2024
a117b91
migrating AddOn tests to vitest
prayanshchh Nov 21, 2024
0fc12b2
removing unnecessay alias
prayanshchh Nov 21, 2024
4ab8e9b
Merge branch 'develop-postgres' into migration_to_vitest
prayanshchh Nov 23, 2024
565c161
eslint fix
prayanshchh Nov 23, 2024
3d8cb16
suggestion #2
prayanshchh Nov 23, 2024
8708339
Merge branch 'develop-postgres' into migration_to_vitest
prayanshchh Nov 24, 2024
637f386
workflow setup
prayanshchh Nov 24, 2024
1c9ad17
Merge branch 'migration_to_vitest' of https://github.com/prayanshchh/…
prayanshchh Nov 24, 2024
9c24516
fix: tsdoc workflow
varshith257 Nov 24, 2024
79a8903
reformat comment to tsdoc fmt
varshith257 Nov 24, 2024
c1ef506
resolving jest, vitest workflow
prayanshchh Nov 25, 2024
297126a
Merge branch 'migration_to_vitest' of https://github.com/prayanshchh/…
prayanshchh Nov 25, 2024
265f5bd
Merge branch 'develop-postgres' into migration_to_vitest
prayanshchh Nov 25, 2024
1b9323d
lint error
prayanshchh Nov 25, 2024
1c34644
Merge branch 'migration_to_vitest' of https://github.com/prayanshchh/…
prayanshchh Nov 25, 2024
2cccb0b
add tsdoc comments
varshith257 Nov 25, 2024
b8d4c64
exit for workflow
prayanshchh Nov 25, 2024
dab3625
format yml fix
prayanshchh Nov 25, 2024
2f56784
fixing workflow
prayanshchh Nov 25, 2024
a7028fd
cleanup
varshith257 Nov 25, 2024
f0c45e0
ts error
prayanshchh Nov 25, 2024
220a555
Merge branch 'migration_to_vitest' of https://github.com/prayanshchh/…
prayanshchh Nov 25, 2024
2eac8c2
Update .eslintignore
varshith257 Nov 25, 2024
69f3217
tsconfig edit
prayanshchh Nov 25, 2024
05ae7b6
Merge branch 'migration_to_vitest' of https://github.com/prayanshchh/…
prayanshchh Nov 25, 2024
893d723
removing suggestions 2
prayanshchh Nov 25, 2024
98acc2f
Merge branch 'develop-postgres' into migration_to_vitest
varshith257 Nov 26, 2024
8bec841
Update vitest.config.ts
varshith257 Nov 26, 2024
11a6cb1
fmt
varshith257 Nov 26, 2024
c905d29
config update
prayanshchh Nov 26, 2024
a694964
merge
prayanshchh Nov 26, 2024
55ec1cc
ignoring .spec files for cov
prayanshchh Nov 26, 2024
99d8566
new suggestions
prayanshchh Nov 26, 2024
47f196e
merge reports
prayanshchh Nov 26, 2024
0e01e9a
Update vitest.config.ts
varshith257 Nov 26, 2024
96f9cd2
vitest run fix
prayanshchh Nov 26, 2024
8c8cdd9
Merge branch 'migration_to_vitest' of https://github.com/prayanshchh/…
prayanshchh Nov 26, 2024
1d933f4
report dir change
prayanshchh Nov 26, 2024
00c7b6b
report dir change 2
prayanshchh Nov 26, 2024
32df6a5
check workflow
prayanshchh Nov 26, 2024
0c23834
workflow update
prayanshchh Nov 26, 2024
bec94ad
fixing merge report
prayanshchh Nov 26, 2024
f4e1562
suggestion reverted
prayanshchh Nov 26, 2024
dbb8e2e
merge cov reports
prayanshchh Nov 26, 2024
ab6d03d
changing format of jest cov reports
prayanshchh Nov 26, 2024
6214b2f
Merge Coverage Reports Using lcov-result-merger
prayanshchh Nov 26, 2024
eea3f32
fixing merge report
prayanshchh Nov 26, 2024
220fc83
final changes
prayanshchh Nov 26, 2024
39d7676
final changes 2
prayanshchh Nov 26, 2024
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
6 changes: 5 additions & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
# Contains the PDF file of the Tag as JSON string, thus does not need to be linted
src/components/CheckIn/tagTemplate.ts
src/components/CheckIn/tagTemplate.ts
package.json
package-lock.json
tsconfig.json

214 changes: 46 additions & 168 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ jobs:
- name: Get changed TypeScript files
id: changed-files
uses: tj-actions/changed-files@v45
uses: tj-actions/changed-files@v40
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prayanshchh There are several cases in this file where you reverted the code to a previous version. In this case you downgraded a package that was recently upgraded.

- name: Check formatting
if: steps.changed-files.outputs.only_changed != 'true'
run: npm run format:check

- name: Run formatting if check fails
if: failure()
run: npm run format
Expand All @@ -57,10 +57,10 @@ jobs:

- name: Check for linting errors in modified files
if: steps.changed-files.outputs.only_changed != 'true'
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
env:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prayanshchh Another case of reverting a previous PR

CHANGED_FILES: ${{ steps.changed_files.outputs.all_changed_files }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another case where a previous PR was overridden.

run: npx eslint ${CHANGED_FILES} && python .github/workflows/eslint_disable_check.py
prayanshchh marked this conversation as resolved.
Show resolved Hide resolved

- name: Check for TSDoc comments
run: npm run check-tsdoc # Run the TSDoc check script

Expand Down Expand Up @@ -89,13 +89,12 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Get Changed Unauthorized files
id: changed-unauth-files
uses: tj-actions/changed-files@v45
uses: tj-actions/changed-files@v40
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prayanshchh Another case of reverting a previous PR

with:
files: |
.env*
.github/**
env.example
.node-version
Expand Down Expand Up @@ -124,16 +123,10 @@ jobs:
ISSUE_GUIDELINES.md
PR_GUIDELINES.md
README.md
*.pem
*.key
*.cert
*.password
*.secret
*.credentials
- name: List all changed unauthorized files
if: steps.changed-unauth-files.outputs.any_changed == 'true' || steps.changed-unauth-files.outputs.any_deleted == 'true'
env:
env:
CHANGED_UNAUTH_FILES: ${{ steps.changed-unauth-files.outputs.all_changed_files }}
run: |
for file in ${CHANGED_UNAUTH_FILES}; do
Expand All @@ -151,17 +144,17 @@ jobs:

- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v45
uses: tj-actions/changed-files@v40
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prayanshchh Another case of reverting a previous PR


- name: Echo number of changed files
env:
env:
CHANGED_FILES_COUNT: ${{ steps.changed-files.outputs.all_changed_files_count }}
run: |
echo "Number of files changed: $CHANGED_FILES_COUNT"
- name: Check if the number of changed files is less than 100
if: steps.changed-files.outputs.all_changed_files_count > 100
env:
env:
CHANGED_FILES_COUNT: ${{ steps.changed-files.outputs.all_changed_files_count }}
run: |
echo "Error: Too many files (greater than 100) changed in the pull request."
Expand Down Expand Up @@ -201,15 +194,34 @@ jobs:

- name: Install Dependencies
run: npm install

- name: Get changed TypeScript files
id: changed-files
uses: tj-actions/changed-files@v45
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another instance of a reversion

uses: tj-actions/changed-files@v40

- name: Run Jest Tests
if: steps.changed-files.outputs.only_changed != 'true'
env:
NODE_V8_COVERAGE: './coverage/jest'
run: |
varshith257 marked this conversation as resolved.
Show resolved Hide resolved
npm run test -- --watchAll=false --coverage
- name: Run tests
- name: Run Vitest Tests
if: steps.changed-files.outputs.only_changed != 'true'
run: npm run test -- --watchAll=false --coverage
env:
NODE_V8_COVERAGE: './coverage/vitest'
run: |
npm run test:vitest:coverage
- name: Merge Coverage Reports
if: steps.changed-files.outputs.only_changed != 'true'
run: |
mkdir -p coverage
if ! npx lcov-result-merger 'coverage/*/lcov.info' > 'coverage/lcov.info'; then
echo "Failed to merge coverage reports"
exit 1
fi
- name: TypeScript compilation for changed files
run: |
for file in ${{ steps.changed-files.outputs.all_files }}; do
Expand All @@ -218,18 +230,19 @@ jobs:
fi
done
- name: Present and Upload coverage to Codecov as ${{env.CODECOV_UNIQUE_NAME}}
- name: Upload Coverage to Codecov
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line was added to create a unique ID for code coverage job creation to make troubleshooting easier. This needs to be restored

uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
fail_ci_if_error: false
files: './coverage/lcov.info'
name: '${{env.CODECOV_UNIQUE_NAME}}'
fail_ci_if_error: false

- name: Test acceptable level of code coverage
uses: VeryGoodOpenSource/very_good_coverage@v3
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prayanshchh Another case of reverting a previous PR

uses: VeryGoodOpenSource/very_good_coverage@v2
with:
path: './coverage/lcov.info'
path: "./coverage/lcov.info"
min_coverage: 95.0
prayanshchh marked this conversation as resolved.
Show resolved Hide resolved

Graphql-Inspector:
Expand All @@ -247,161 +260,26 @@ jobs:

- name: resolve dependency
run: npm install -g @graphql-inspector/cli

- name: Clone API Repository
run: |
# Retrieve the complete branch name directly from the GitHub context
FULL_BRANCH_NAME=${{ github.base_ref }}
echo "FULL_Branch_NAME: $FULL_BRANCH_NAME"
# Clone the specified repository using the extracted branch name
git clone --branch $FULL_BRANCH_NAME https://github.com/PalisadoesFoundation/talawa-api && ls -a
git clone --branch $FULL_BRANCH_NAME https://github.com/PalisadoesFoundation/talawa-api && ls -a
- name: Validate Documents
run: graphql-inspector validate './src/GraphQl/**/*.ts' './talawa-api/schema.graphql'

Start-App-Without-Docker:
name: Check if Talawa Admin app starts (No Docker)
runs-on: ubuntu-latest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prayanshchh

This is one of the most serious reversions of the code. We recently merged a PR that would test whether the app would start. Here you reverted the entire test.

needs: [Code-Quality-Checks, Test-Application]
if: github.actor != 'dependabot'
steps:
- name: Checkout the Repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'

- name: Install Dependencies
run: npm install

- name: Build Production App
run: npm run build

- name: Start Production App
run: |
npm run preview &
echo $! > .pidfile_prod
- name: Check if Production App is running
run: |
timeout=120
echo "Starting production health check with ${timeout}s timeout"
while ! nc -z localhost 4173 && [ $timeout -gt 0 ]; do
sleep 1
timeout=$((timeout-1))
if [ $((timeout % 10)) -eq 0 ]; then
echo "Still waiting for production app to start... ${timeout}s remaining"
fi
done
if [ $timeout -eq 0 ]; then
echo "Timeout waiting for production application to start"
exit 1
fi
echo "Production app started successfully"
- name: Stop Production App
run: |
if [ -f .pidfile_prod ]; then
kill "$(cat .pidfile_prod)"
fi
- name: Start Development App
run: |
npm run serve &
echo $! > .pidfile_dev
- name: Check if Development App is running
run: |
timeout=120
echo "Starting development health check with ${timeout}s timeout"
while ! nc -z localhost 4321 && [ $timeout -gt 0 ]; do
sleep 1
timeout=$((timeout-1))
if [ $((timeout % 10)) -eq 0 ]; then
echo "Still waiting for development app to start... ${timeout}s remaining"
fi
done
if [ $timeout -eq 0 ]; then
echo "Timeout waiting for development application to start"
exit 1
fi
echo "Development app started successfully"
- name: Stop Development App
if: always()
run: |
if [ -f .pidfile_dev ]; then
kill "$(cat .pidfile_dev)"
fi
Docker-Start-Check:
name: Check if Talawa Admin app starts in Docker
runs-on: ubuntu-latest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prayanshchh

You reverted the code that tested whether the app would start in docker.

These tests were added for a very good reason. We need to ensure that the app starts. We have had severe difficulties in this area.

needs: [Code-Quality-Checks, Test-Application]
if: github.actor != 'dependabot'
steps:
- name: Checkout the Repository
uses: actions/checkout@v4

- name: Set up Docker
uses: docker/setup-buildx-action@v3
with:
driver-opts: |
image=moby/buildkit:latest
- name: Build Docker image
run: |
set -e
echo "Building Docker image..."
docker build -t talawa-admin-app .
echo "Docker image built successfully"
- name: Run Docker Container
run: |
set -e
echo "Started Docker container..."
docker run -d --name talawa-admin-app-container -p 4321:4321 talawa-admin-app
echo "Docker container started successfully"
- name: Check if Talawa Admin App is running
run: |
timeout="${HEALTH_CHECK_TIMEOUT:-120}"
echo "Starting health check with ${timeout}s timeout"
while ! nc -z localhost 4321 && [ $timeout -gt 0 ]; do
sleep 1
timeout=$((timeout-1))
if [ $((timeout % 10)) -eq 0 ]; then
echo "Still waiting for app to start... ${timeout}s remaining"
fi
done
if [ $timeout -eq 0 ]; then
echo "Timeout waiting for application to start"
echo "Container logs:"
docker logs talawa-admin-app-container
exit 1
fi
echo "Port check passed, verifying health endpoint..."
- name: Stop Docker Container
if: always()
run: |
docker stop talawa-admin-app-container
docker rm talawa-admin-app-container
Check-Target-Branch:
if: ${{ github.actor != 'dependabot[bot]' }}
name: Check Target Branch
runs-on: ubuntu-latest
steps:
- name: Check if the target branch is develop
if: github.event.pull_request.base.ref != 'develop-postgres'
if: github.event.pull_request.base.ref != 'develop'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prayanshchh Another case of reverting a previous PR. You are working on the develop-postgres branch and then reverted it back to develop

run: |
echo "Error: Pull request target branch must be 'develop-postgres'. Please refer PR_GUIDELINES.md"
exit 1
echo "Error: Pull request target branch must be 'develop'. Please refer PR_GUIDELINES.md"
exit 1
20 changes: 16 additions & 4 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
export default {
roots: ['<rootDir>/src'],
collectCoverageFrom: ['src/**/*.{ts,tsx}', '!src/index.tsx'],
collectCoverageFrom: [
'src/**/*.{ts,tsx}',
'!src/index.tsx',
'!node_modules',
'!dist',
'!**/*.{spec,test}.{js,jsx,ts,tsx}',
'!coverage/**',
'!**/index.{js,ts}',
'!**/*.d.ts',
'!src/test/**',
'!vitest.config.ts',],
// setupFiles: ['react-app-polyfill/jsdom'],
setupFiles: ['whatwg-fetch'],
setupFilesAfterEnv: ['<rootDir>/src/setupTests.ts'],
testMatch: [
'<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}',
'<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}',
'<rootDir>/src/**/*.test.{js,jsx,ts,tsx}',
coderabbitai[bot] marked this conversation as resolved.
Show resolved Hide resolved
],
testEnvironment: 'jsdom',
transform: {
Expand All @@ -30,8 +40,8 @@ export default {
'^@dicebear/collection$':
'<rootDir>/scripts/__mocks__/@dicebear/collection.ts',
'\\.svg\\?react$': '<rootDir>/scripts/__mocks__/fileMock.js',
'\\.svg$': '<rootDir>/scripts/__mocks__/fileMock.js',
'^@pdfme/generator$': '<rootDir>/scripts/__mocks__/@pdfme/generator.ts'
'\\.svg$': '<rootDir>/scripts/__mocks__/fileMock.js',
'^@pdfme/generator$': '<rootDir>/scripts/__mocks__/@pdfme/generator.ts',
},
moduleFileExtensions: [
'web.js',
Expand Down Expand Up @@ -68,4 +78,6 @@ export default {
'<rootDir>/build/',
'<rootDir>/public/',
],
coverageDirectory: './coverage/jest',
coverageReporters: ['text', 'html', 'text-summary', 'lcov'],
};
Loading
Loading