initial gitlab.ci config for tests and pages

main
Christopher Maujean 2 months ago
parent c686261d43
commit 7b74eff740
  1. 68
      .gitlab-ci.yml
  2. 26
      jest.config.js
  3. 12
      package.json
  4. 1
      src/setupTests.ts
  5. 1
      vite.config.ts

@ -0,0 +1,68 @@
stages:
- test
- build
- deploy
variables:
NODE_VERSION: "20"
.node_template: &node_template
image: node:${NODE_VERSION}-alpine
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- ~/.cache/
before_script:
- npm install -g bun
- bun install
test:
<<: *node_template
stage: test
script:
- bun run lint
- bun run check
- bun run test --coverage
coverage: '/All files\s*\|\s*[\d.]+\s*\|\s*([\d.]+)/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
paths:
- coverage/
expire_in: 1 week
only:
- main
- merge_requests
- branches
build:
<<: *node_template
stage: build
script:
- bun run build
- bun run build:ldo
artifacts:
paths:
- dist/
expire_in: 1 hour
only:
- main
- merge_requests
pages:
<<: *node_template
stage: deploy
script:
- bun run build
- bun run build:ldo
- mkdir public
- cp -r dist/* public/
artifacts:
paths:
- public
expire_in: 30 days
only:
- main

@ -0,0 +1,26 @@
export default {
preset: 'ts-jest/presets/default-esm',
extensionsToTreatAsEsm: ['.ts', '.tsx'],
globals: {
'ts-jest': {
useESM: true,
},
},
testEnvironment: 'jsdom',
moduleNameMapping: {
'^@/(.*)$': '<rootDir>/src/$1',
},
setupFilesAfterEnv: ['<rootDir>/src/setupTests.ts'],
testMatch: [
'<rootDir>/src/**/__tests__/**/*.(ts|tsx|js)',
'<rootDir>/src/**/?(*.)(spec|test).(ts|tsx|js)',
],
collectCoverageFrom: [
'src/**/*.(ts|tsx)',
'!src/**/*.d.ts',
'!src/main.tsx',
'!src/vite-env.d.ts',
],
coverageDirectory: 'coverage',
coverageReporters: ['text', 'lcov', 'html'],
};

@ -9,7 +9,10 @@
"check": "tsc --noEmit && eslint .", "check": "tsc --noEmit && eslint .",
"build:ldo": "ldo build --input src/.shapes --output src/.ldo", "build:ldo": "ldo build --input src/.shapes --output src/.ldo",
"lint": "eslint .", "lint": "eslint .",
"preview": "vite preview" "preview": "vite preview",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage"
}, },
"dependencies": { "dependencies": {
"@emotion/react": "^11.14.0", "@emotion/react": "^11.14.0",
@ -33,6 +36,10 @@
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.30.1", "@eslint/js": "^9.30.1",
"@ldo/cli": "^1.0.0-alpha.15", "@ldo/cli": "^1.0.0-alpha.15",
"@testing-library/jest-dom": "^6.4.2",
"@testing-library/react": "^14.2.1",
"@testing-library/user-event": "^14.5.2",
"@types/jest": "^29.5.12",
"@types/jsonld": "^1.5.15", "@types/jsonld": "^1.5.15",
"@types/react": "^19.1.8", "@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6", "@types/react-dom": "^19.1.6",
@ -43,6 +50,9 @@
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20", "eslint-plugin-react-refresh": "^0.4.20",
"globals": "^16.3.0", "globals": "^16.3.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"ts-jest": "^29.1.2",
"typescript": "~5.8.3", "typescript": "~5.8.3",
"typescript-eslint": "^8.35.1", "typescript-eslint": "^8.35.1",
"vite": "^6.0.0" "vite": "^6.0.0"

@ -0,0 +1 @@
import '@testing-library/jest-dom';

@ -5,6 +5,7 @@ import { resolve } from 'node:path'
// https://vite.dev/config/ // https://vite.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
base: process.env.CI ? '/' : '/',
resolve: { resolve: {
alias: { alias: {
"@": resolve(__dirname, "src"), "@": resolve(__dirname, "src"),

Loading…
Cancel
Save