Exporter les tests coverage de jest sur codebuild
Cet article est la suite de jest-junit, le contenu est très similaire Jest JUNIT
Commandes
Dans chaque module, lancer les commandes suivantes
npm install --save-dev jest jest-junit
Configurer Jest:
cat <<EOF > ./jest.config.js
// jest.config.js
module.exports = {
testTimeout: 30000,
reporters: [
'default',
[
'jest-junit',
{
outputDirectory: './reports',
outputName: 'test.xml',
},
],
],
};
EOF
Puis ajouter dans votre fichier .gitignore
, le répertoire reports/
& coverage/
Exemple avec CodeBuild et AWS
Créer le fichier buildspec:
cat <<EOF > ./buildspec.yml
version: 0.2
phases:
install:
commands:
# Install all dependencies (including dependencies for running tests)
- npm install
pre_build:
commands:
- npm run lint
- npm run test
- npm run audit
# Remove all dependencies not needed for the Lambda deployment package (the packages from devDependencies in package.json)
- npm prune --production
build:
commands:
# Use AWS SAM to package the application by using AWS CloudFormation
- aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml
reports:
jest_reports:
files:
- test.xml
file-format: JUNITXML
base-directory: reports/
jest_coverage:
files:
- clover.xml
file-format: CLOVERXML
base-directory: coverage/
artifacts:
type: zip
files:
- template-export.yml
EOF
Si vous utilisez un monorepo:
reports:
jest_reports:
files:
- test.xml
file-format: JUNITXML
base-directory: "**/reports/"
jest_reports:
files:
- clover.xml
file-format: CLOVERXML
base-directory: "**/coverage/"
discard-paths: no
Exemple de test coverage généré avec CodeBuild
TODO
Les permissions IAMs
- codebuild:UpdateReportGroup
- codebuild:CreateReportGroup
- codebuild:CreateReport
- codebuild:UpdateReport
- codebuild:BatchPutCodeCoverages
- codebuild:BatchPutTestCases