From bfcf891e49e730578bf6e2168f9232695c11af33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blak?= Date: Tue, 17 Oct 2023 11:48:38 +0200 Subject: [PATCH] General: Add Storybook tests to CI Runs all tests from Storybook directory via ctest: - tests for Storybook itself - UI unit tests using the same stubs mechanism as Storybook pages - PagesValidator checking if SB pages are compilable Closes: #12213 Closes: #12437 --- ci/Jenkinsfile.tests-statusq | 106 +------------------------------ ci/Jenkinsfile.tests-ui | 118 +++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 105 deletions(-) mode change 100644 => 120000 ci/Jenkinsfile.tests-statusq create mode 100644 ci/Jenkinsfile.tests-ui diff --git a/ci/Jenkinsfile.tests-statusq b/ci/Jenkinsfile.tests-statusq deleted file mode 100644 index 72615201d6..0000000000 --- a/ci/Jenkinsfile.tests-statusq +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env groovy -library 'status-jenkins-lib@v1.7.16' - -/* Options section can't access functions in objects. */ -def isPRBuild = utils.isPRBuild() - -pipeline { - agent { - label 'linux && x86_64 && qt-5.15.2' - } - - parameters { - choice( - name: 'VERBOSE', - description: 'Level of verbosity based on nimbus-build-system setup.', - choices: ['0', '1', '2'] - ) - string( - name: 'NIMFLAGS', - description: 'Extra Nim flags. Examples: --verbosity:2 --passL:"-v" --passC:"-v"', - defaultValue: '--colors:off' - ) - } - - options { - timestamps() - /* Prevent Jenkins jobs from running forever */ - timeout(time: 120, unit: 'MINUTES') - /* manage how many builds we keep */ - buildDiscarder(logRotator( - numToKeepStr: '10', - daysToKeepStr: '30', - artifactNumToKeepStr: '3', - )) - /* Abort old PR builds. */ - disableConcurrentBuilds( - abortPrevious: isPRBuild - ) - } - - environment { - TARGET = 'tests/statusq' - /* Improve make performance */ - MAKEFLAGS = "-j4 V=${params.VERBOSE}" - /* Makefile assumes the compiler folder is included */ - QTDIR = "/opt/qt/5.15.2/gcc_64" - PATH = "${env.QTDIR}/bin:${env.PATH}" - /* Include library in order to compile the project */ - LD_LIBRARY_PATH = "$QTDIR/lib:$WORKSPACE/vendor/status-go/build/bin:$WORKSPACE/vendor/status-keycard-go/build/libkeycard/" - } - - stages { - stage('Build Tests') { - steps { - sh 'make statusq-tests' - } - } - - stage('Build Sanity') { - steps { - sh 'make statusq-sanity-checker' - } - } - - stage('Check Tests') { - steps { script { - /* Needed for QGuiApplication to import QtQuick.Dialogs */ - wrap([ - $class: 'Xvfb', - autoDisplayName: true, - parallelBuild: true, - screen: '2560x1440x24', - ]) { - sh('make run-statusq-tests') - } - } } - } - - stage('Check Sanity') { - steps { script { - /* Needed for QGuiApplication to import QtQuick.Dialogs */ - wrap([ - $class: 'Xvfb', - autoDisplayName: true, - parallelBuild: true, - screen: '2560x1440x24', - ]) { - sh('make run-statusq-sanity-checker') - } - } } - } - - stage('Upload') { - steps { script { - env.PKG_URL = "${currentBuild.absoluteUrl}/consoleText" - } } - } - } - - post { - success { script { github.notifyPR(true) } } - failure { script { github.notifyPR(false) } } - cleanup { cleanWs() } - } -} diff --git a/ci/Jenkinsfile.tests-statusq b/ci/Jenkinsfile.tests-statusq new file mode 120000 index 0000000000..54ad8d4148 --- /dev/null +++ b/ci/Jenkinsfile.tests-statusq @@ -0,0 +1 @@ +Jenkinsfile.tests-ui \ No newline at end of file diff --git a/ci/Jenkinsfile.tests-ui b/ci/Jenkinsfile.tests-ui new file mode 100644 index 0000000000..f74002659d --- /dev/null +++ b/ci/Jenkinsfile.tests-ui @@ -0,0 +1,118 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.7.16' + +/* Options section can't access functions in objects. */ +def isPRBuild = utils.isPRBuild() + +pipeline { + agent { + label 'linux && x86_64 && qt-5.15.2' + } + + parameters { + choice( + name: 'VERBOSE', + description: 'Level of verbosity based on nimbus-build-system setup.', + choices: ['0', '1', '2'] + ) + } + + options { + timestamps() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 120, unit: 'MINUTES') + /* manage how many builds we keep */ + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '30', + artifactNumToKeepStr: '3', + )) + /* Abort old PR builds. */ + disableConcurrentBuilds( + abortPrevious: isPRBuild + ) + } + + environment { + TARGET = 'tests/ui' + /* Improve make performance */ + MAKEFLAGS = "-j4 V=${params.VERBOSE}" + /* Makefile assumes the compiler folder is included */ + QTDIR = "/opt/qt/5.15.2/gcc_64" + PATH = "${env.QTDIR}/bin:${env.PATH}" + } + + stages { + stage('Build StatusQ Tests') { + steps { + sh 'make statusq-tests' + } + } + + stage('Build StatusQ Sanity Checker') { + steps { + sh 'make statusq-sanity-checker' + } + } + + stage('Build Storybook') { + steps { + sh 'make storybook-build' + } + } + + stage('Check StatusQ Tests') { + steps { script { + /* Needed for QGuiApplication to import QtQuick.Dialogs */ + wrap([ + $class: 'Xvfb', + autoDisplayName: true, + parallelBuild: true, + screen: '2560x1440x24', + ]) { + sh('make run-statusq-tests') + } + } } + } + + stage('Check StatusQ Sanity Checker') { + steps { script { + /* Needed for QGuiApplication to import QtQuick.Dialogs */ + wrap([ + $class: 'Xvfb', + autoDisplayName: true, + parallelBuild: true, + screen: '2560x1440x24', + ]) { + sh('make run-statusq-sanity-checker') + } + } } + } + + stage('Check Storybook Tests') { + steps { script { + /* Needed for QGuiApplication to import QtQuick.Dialogs */ + wrap([ + $class: 'Xvfb', + autoDisplayName: true, + parallelBuild: true, + screen: '2560x1440x24', + ]) { + sh('make run-storybook-tests') + } + } } + } + + stage('Upload') { + steps { script { + env.PKG_URL = "${currentBuild.absoluteUrl}/consoleText" + } } + } + } + + post { + success { script { github.notifyPR(true) } } + failure { script { github.notifyPR(false) } } + cleanup { cleanWs() } + } +}