import hudson.tasks.test.AbstractTestResultAction @Library('cadoles') _ pipeline { parameters { text(name: 'URLS', defaultValue: 'https://msedev.crous-toulouse.fr\nhttps://msedev.crous-toulouse.fr/envole/enregistrement\nhttps://msedev.crous-toulouse.fr/envole/page/faq\nhttps://msedev.crous-toulouse.fr/envole/page/?t=liens_utiles\nhttps://msedev.crous-toulouse.fr/envole/page/?t=mentions_legales\nhttps://msedev.crous-toulouse.fr/envole/message/new\nhttps://msedev.crous-toulouse.fr/envole/recuperation/email\nhttps://msedev.crous-toulouse.fr/envole/courriel/raz', description: 'Liste des URLs à tester, une par ligne') booleanParam(name: 'INCLUDE_WARNINGS', defaultValue: false, description: 'Inclure les avertissements') booleanParam(name: 'INCLUDE_NOTICES', defaultValue: false, description: 'Inclure les notifications') text(name: 'COOKIE_VALUE', defaultValue: 'mselang=fr_FR') } options { disableConcurrentBuilds() } agent { node { label 'docker' } } stages { stage('Run RGAA audit') { steps { script { def urls = params.URLS.split('\n') def count = 0 urls.each { u -> stage("Audit page '${u}'") { withCredentials([ usernamePassword( credentialsId: 'msedev-basic-auth', usernameVariable: 'MSEDEV_USERNAME', passwordVariable: 'MSEDEV_PASSWORD' ) ]) { def report = pa11y.audit(u.trim(), [ reporter: 'junit', username: env.MSEDEV_USERNAME, password: env.MSEDEV_PASSWORD, standard: 'WCAG2AA', includeNotices: params.INCLUDE_NOTICES, includeWarnings: params.INCLUDE_WARNINGS, cookie_value: params.COOKIE_VALUE ]) writeFile file:"./report_${count}.xml", text:report count++ } } } junit testResults: '*.xml', skipPublishingChecks: true rocketSend( channel: '#cnous-mse', avatar: 'https://jenkins.cadol.es/static/b5f67753/images/headshot.png', message: """ Audit RGAA | ${testStatuses()} - [Voir les tests](${env.RUN_DISPLAY_URL}) @here """.stripIndent(), rawMessage: true, ) } } } } post { always { cleanWs() } } } @NonCPS def testStatuses() { def testStatus = '' AbstractTestResultAction testResultAction = currentBuild.rawBuild.getAction(AbstractTestResultAction.class) if (testResultAction != null) { def total = testResultAction.totalCount def failed = testResultAction.failCount def skipped = testResultAction.skipCount def passed = total - failed - skipped testStatus = "Passant(s): ${passed}, Échoué(s): ${failed} ${testResultAction.failureDiffString}, Désactivé(s): ${skipped}" } return testStatus }