Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ecd0a73bc8 | ||
|
|
39d61dc7ad | ||
|
|
43491359d9 | ||
| 5ed2cea7e9 | |||
|
|
cbb16a8d52 | ||
| 70e94a6ce0 |
@@ -151,6 +151,9 @@ jobs:
|
||||
--coverage.exclude='src/db/**' \
|
||||
--coverage.exclude='src/lib/**' \
|
||||
--coverage.exclude='src/types/**' \
|
||||
--coverage.exclude='**/index.tsx' \
|
||||
--coverage.exclude='**/vite-env.d.ts' \
|
||||
--coverage.exclude='**/vitest.setup.ts' \
|
||||
--reporter=verbose --includeTaskLocation --testTimeout=10000 --silent=passed-only --no-file-parallelism || true
|
||||
|
||||
echo "--- Running Integration Tests ---"
|
||||
@@ -162,6 +165,9 @@ jobs:
|
||||
--coverage.exclude='src/db/**' \
|
||||
--coverage.exclude='src/lib/**' \
|
||||
--coverage.exclude='src/types/**' \
|
||||
--coverage.exclude='**/index.tsx' \
|
||||
--coverage.exclude='**/vite-env.d.ts' \
|
||||
--coverage.exclude='**/vitest.setup.ts' \
|
||||
--reporter=verbose --includeTaskLocation --testTimeout=10000 --silent=passed-only || true
|
||||
|
||||
echo "--- Running E2E Tests ---"
|
||||
@@ -175,6 +181,9 @@ jobs:
|
||||
--coverage.exclude='src/db/**' \
|
||||
--coverage.exclude='src/lib/**' \
|
||||
--coverage.exclude='src/types/**' \
|
||||
--coverage.exclude='**/index.tsx' \
|
||||
--coverage.exclude='**/vite-env.d.ts' \
|
||||
--coverage.exclude='**/vitest.setup.ts' \
|
||||
--reporter=verbose --no-file-parallelism || true
|
||||
|
||||
# Re-enable secret masking for subsequent steps.
|
||||
@@ -246,7 +255,10 @@ jobs:
|
||||
--temp-dir "$NYC_SOURCE_DIR" \
|
||||
--exclude "**/*.test.ts" \
|
||||
--exclude "**/tests/**" \
|
||||
--exclude "**/mocks/**"
|
||||
--exclude "**/mocks/**" \
|
||||
--exclude "**/index.tsx" \
|
||||
--exclude "**/vite-env.d.ts" \
|
||||
--exclude "**/vitest.setup.ts"
|
||||
|
||||
# Re-enable secret masking for subsequent steps.
|
||||
echo "::secret-masking::"
|
||||
@@ -259,16 +271,6 @@ jobs:
|
||||
if: always() # This step runs even if the previous test or coverage steps failed.
|
||||
run: echo "Skipping test artifact cleanup on runner; this is handled on the server."
|
||||
|
||||
- name: Deploy Coverage Report to Public URL
|
||||
if: always()
|
||||
run: |
|
||||
TARGET_DIR="/var/www/flyer-crawler-test.projectium.com/coverage"
|
||||
echo "Deploying HTML coverage report to $TARGET_DIR..."
|
||||
mkdir -p "$TARGET_DIR"
|
||||
rm -rf "$TARGET_DIR"/*
|
||||
cp -r .coverage/* "$TARGET_DIR/"
|
||||
echo "✅ Coverage report deployed to https://flyer-crawler-test.projectium.com/coverage"
|
||||
|
||||
- name: Archive Code Coverage Report
|
||||
# This action saves the generated HTML coverage report as a downloadable artifact.
|
||||
uses: actions/upload-artifact@v3
|
||||
@@ -358,6 +360,17 @@ jobs:
|
||||
rsync -avz dist/ "$APP_PATH"
|
||||
echo "Application deployment complete."
|
||||
|
||||
- name: Deploy Coverage Report to Public URL
|
||||
if: always()
|
||||
run: |
|
||||
TARGET_DIR="/var/www/flyer-crawler-test.projectium.com/coverage"
|
||||
echo "Deploying HTML coverage report to $TARGET_DIR..."
|
||||
mkdir -p "$TARGET_DIR"
|
||||
rm -rf "$TARGET_DIR"/*
|
||||
# The merged nyc report is generated in the .coverage directory. We copy its contents.
|
||||
cp -r .coverage/* "$TARGET_DIR/"
|
||||
echo "✅ Coverage report deployed to https://flyer-crawler-test.projectium.com/coverage"
|
||||
|
||||
- name: Install Backend Dependencies and Restart Test Server
|
||||
env:
|
||||
# --- Test Secrets Injection ---
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "flyer-crawler",
|
||||
"version": "0.2.35",
|
||||
"version": "0.4.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "flyer-crawler",
|
||||
"version": "0.2.35",
|
||||
"version": "0.4.0",
|
||||
"dependencies": {
|
||||
"@bull-board/api": "^6.14.2",
|
||||
"@bull-board/express": "^6.14.2",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "flyer-crawler",
|
||||
"private": true,
|
||||
"version": "0.2.35",
|
||||
"version": "0.4.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "concurrently \"npm:start:dev\" \"vite\"",
|
||||
|
||||
@@ -29,13 +29,10 @@ describe('SystemService', () => {
|
||||
|
||||
describe('getPm2Status', () => {
|
||||
it('should return success: true when process is online', async () => {
|
||||
const stdout = `
|
||||
┌────┬──────────────────────┬──────────┐
|
||||
│ id │ name │ status │
|
||||
├────┼──────────────────────┼──────────┤
|
||||
│ 0 │ flyer-crawler-api │ online │
|
||||
└────┴──────────────────────┴──────────┘
|
||||
`;
|
||||
// This stdout mimics the output of `pm2 describe <app_name>`
|
||||
const stdout = `Describing process with id 0 - name flyer-crawler-api
|
||||
│ status │ online │
|
||||
│ name │ flyer-crawler-api │`;
|
||||
mockExecAsync.mockResolvedValue({ stdout, stderr: '' });
|
||||
|
||||
const result = await systemService.getPm2Status();
|
||||
@@ -47,13 +44,9 @@ describe('SystemService', () => {
|
||||
});
|
||||
|
||||
it('should return success: false when process is stopped', async () => {
|
||||
const stdout = `
|
||||
┌────┬──────────────────────┬──────────┐
|
||||
│ id │ name │ status │
|
||||
├────┼──────────────────────┼──────────┤
|
||||
│ 0 │ flyer-crawler-api │ stopped │
|
||||
└────┴──────────────────────┴──────────┘
|
||||
`;
|
||||
const stdout = `Describing process with id 0 - name flyer-crawler-api
|
||||
│ status │ stopped │
|
||||
│ name │ flyer-crawler-api │`;
|
||||
mockExecAsync.mockResolvedValue({ stdout, stderr: '' });
|
||||
|
||||
const result = await systemService.getPm2Status();
|
||||
|
||||
Reference in New Issue
Block a user