@eeacms/volto-tableau 6.0.0 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,15 +4,30 @@ All notable changes to this project will be documented in this file. Dates are d
4
4
 
5
5
  Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
6
6
 
7
- ### [6.0.0](https://github.com/eea/volto-tableau/compare/5.0.2...6.0.0) - 30 October 2023
7
+ ### [6.0.1](https://github.com/eea/volto-tableau/compare/6.0.0...6.0.1) - 10 November 2023
8
8
 
9
- #### :house: Documentation changes
9
+ #### :house: Internal changes
10
10
 
11
- - docs: add demo gif [ana-oprea - [`a9ccb11`](https://github.com/eea/volto-tableau/commit/a9ccb1194ba6bcac99649b586113fe4f7c26a7eb)]
11
+ - chore: [JENKINS] Refactor automated testing [valentinab25 - [`903b90a`](https://github.com/eea/volto-tableau/commit/903b90a2df0abc183aa68d99a89bb688de3a0c73)]
12
12
 
13
13
  #### :hammer_and_wrench: Others
14
14
 
15
- - Release 6.0.0 [Laszlo Cseh - [`576ce51`](https://github.com/eea/volto-tableau/commit/576ce5199f9021c33c404d20bbbce43192715c80)]
15
+ - tests: add missing imports [kreafox - [`68289f0`](https://github.com/eea/volto-tableau/commit/68289f0a0d95388751487635cfefbf992cd2f3ee)]
16
+ - tests: add missing imports [kreafox - [`fc5adc2`](https://github.com/eea/volto-tableau/commit/fc5adc2ab4d6fa56ac2b83d88a3a812dde427188)]
17
+ - tests: update volto version in Jenkinsfile [kreafox - [`3271a6c`](https://github.com/eea/volto-tableau/commit/3271a6c611d19511d5db67be9e29104c03b3f027)]
18
+ - tests: increase coverage [kreafox - [`ecb9262`](https://github.com/eea/volto-tableau/commit/ecb92625a44365faf4c39f0ff3f02ccc4ca21656)]
19
+ - Fix tableau height [kreafox - [`6194c24`](https://github.com/eea/volto-tableau/commit/6194c2405e2bd93aba9865caed76292cd55193d3)]
20
+ - Show share & download button on widget view [kreafox - [`a66e253`](https://github.com/eea/volto-tableau/commit/a66e2537d08dc7129e249c28e1daa27246c88815)]
21
+ - test: [JENKINS] Add cpu limit on cypress docker [valentinab25 - [`9d2189d`](https://github.com/eea/volto-tableau/commit/9d2189d4edb13dd449d75cd6dd9052bbed67304d)]
22
+ - test: [JENKINS] Increase shm-size to cypress docker [valentinab25 - [`f2fa3f9`](https://github.com/eea/volto-tableau/commit/f2fa3f9ccabab918586179ac16ead44e2eba8498)]
23
+ - test: [JENKINS] Improve cypress time [valentinab25 - [`5748183`](https://github.com/eea/volto-tableau/commit/5748183c27dae18a4ebbc067d659cbc24cad8f71)]
24
+ - use toolbar from volto-embed [Miu Razvan - [`1a232a1`](https://github.com/eea/volto-tableau/commit/1a232a15f2bbe05da75307800590d0a0a1c4996b)]
25
+ ## [6.0.0](https://github.com/eea/volto-tableau/compare/5.0.2...6.0.0) - 30 October 2023
26
+
27
+ #### :house: Documentation changes
28
+
29
+ - docs: add demo gif [ana-oprea - [`a9ccb11`](https://github.com/eea/volto-tableau/commit/a9ccb1194ba6bcac99649b586113fe4f7c26a7eb)]
30
+
16
31
  ### [5.0.2](https://github.com/eea/volto-tableau/compare/5.0.1...5.0.2) - 24 October 2023
17
32
 
18
33
  #### :rocket: New Features
@@ -63,6 +78,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
63
78
  - test: change volto version in Jenkinsfile [ana-oprea - [`347aceb`](https://github.com/eea/volto-tableau/commit/347aceb07d152fddeebbf3a7e7a6ac9c55dc21ba)]
64
79
  - test: increase cypress timeout [ana-oprea - [`bdf4408`](https://github.com/eea/volto-tableau/commit/bdf44083cd84c96b4914d3f8a3bb17c5187f191c)]
65
80
  - test: EN locales, pre-commit fix, feature PRs checks Refs #257193 [valentinab25 - [`caff974`](https://github.com/eea/volto-tableau/commit/caff9742a703b224133a8dd2a969629e70c9fd33)]
81
+ - test: Fix eslint and yarn i18n [Alin Voinea - [`b8be7fb`](https://github.com/eea/volto-tableau/commit/b8be7fb9ab10faed0a1be8ce7e3d4e7c78ebe020)]
66
82
  - i18n: Add en [Alin Voinea - [`c5e20dd`](https://github.com/eea/volto-tableau/commit/c5e20ddea25c830ac80665ee9a71e557e8cd117d)]
67
83
  - test: Update Makefile and docker-compose to align it with Jenkinsfile [valentinab25 - [`2116ff9`](https://github.com/eea/volto-tableau/commit/2116ff95c6454e813bdca44e6c3aa81fa0a916b8)]
68
84
  ## [5.0.0](https://github.com/eea/volto-tableau/compare/4.1.1...5.0.0) - 25 July 2023
@@ -74,17 +90,21 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
74
90
  #### :hammer_and_wrench: Others
75
91
 
76
92
  - Release 5.0.0 [Alin Voinea - [`97c98e9`](https://github.com/eea/volto-tableau/commit/97c98e98b1295a4ad45756326dc20cd59517515f)]
93
+ - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`2acb3a5`](https://github.com/eea/volto-tableau/commit/2acb3a5490f62ce0a95ebbd03c32874ac3a42603)]
77
94
  ### [4.1.1](https://github.com/eea/volto-tableau/compare/4.1.0...4.1.1) - 21 July 2023
78
95
 
79
96
  #### :hammer_and_wrench: Others
80
97
 
81
98
  - Add VisualizationViewWidget [Tiberiu Ichim - [`fa881cb`](https://github.com/eea/volto-tableau/commit/fa881cbc3643a46697fb16d1c86ada1d4121a46a)]
99
+ - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`cbcbad2`](https://github.com/eea/volto-tableau/commit/cbcbad26f7aa3683122199c8d5cbd142903df93b)]
100
+ - Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`51abe6d`](https://github.com/eea/volto-tableau/commit/51abe6d4db80825fe2e396e04c7003c6ad79b480)]
82
101
  ### [4.1.0](https://github.com/eea/volto-tableau/compare/4.0.0...4.1.0) - 15 June 2023
83
102
 
84
103
  ## [4.0.0](https://github.com/eea/volto-tableau/compare/3.0.8...4.0.0) - 13 June 2023
85
104
 
86
105
  #### :house: Internal changes
87
106
 
107
+ - chore: [JENKINS] Remove alpha testing version [valentinab25 - [`e33bb21`](https://github.com/eea/volto-tableau/commit/e33bb21eb429c33e3a15d771487a1c9af8ccb0d5)]
88
108
 
89
109
  #### :hammer_and_wrench: Others
90
110
 
@@ -116,6 +136,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
116
136
 
117
137
  #### :hammer_and_wrench: Others
118
138
 
139
+ - Add Sonarqube tag using industry-frontend addons list [EEA Jenkins - [`f5deccd`](https://github.com/eea/volto-tableau/commit/f5deccd84372752908b300c5cfd78134818e5ce4)]
119
140
  ### [3.0.6](https://github.com/eea/volto-tableau/compare/3.0.5...3.0.6) - 30 January 2023
120
141
 
121
142
  ### [3.0.5](https://github.com/eea/volto-tableau/compare/3.0.4...3.0.5) - 26 January 2023
@@ -187,6 +208,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
187
208
  - Update commands.js [Nilesh - [`7c48437`](https://github.com/eea/volto-tableau/commit/7c4843780efb9b85a4728de73c00d831c1d8fdcf)]
188
209
  - Update e2e.js [Nilesh - [`f67b45c`](https://github.com/eea/volto-tableau/commit/f67b45c170f58f8d0301192994226f173e4cb00a)]
189
210
  - latest volto compatibility refs #154757 [nileshgulia1 - [`881ba48`](https://github.com/eea/volto-tableau/commit/881ba482dc9b82e7fdac16549d41e80a6d26b3de)]
211
+ - Add Sonarqube tag using marine-frontend addons list [EEA Jenkins - [`58e25df`](https://github.com/eea/volto-tableau/commit/58e25df2291add09670143bee54cde103ee835b9)]
190
212
  ### [1.3.0](https://github.com/eea/volto-tableau/compare/1.2.5...1.3.0) - 28 September 2022
191
213
 
192
214
  #### :hammer_and_wrench: Others
@@ -200,11 +222,15 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
200
222
  - Use volto 16 alpha 14 [Miu Razvan - [`93641be`](https://github.com/eea/volto-tableau/commit/93641be4c2393f49008aff789400cf7c947949fd)]
201
223
  - Revert volto-tableau group to common [Andrei Grigore - [`9d24c6d`](https://github.com/eea/volto-tableau/commit/9d24c6d2767fed6a840cddaee55dbd5cecb544b5)]
202
224
  - Tableaugroup typo fix [Andrei Grigore - [`b0b5378`](https://github.com/eea/volto-tableau/commit/b0b5378a437043120a96c9e5e8802584145daa22)]
225
+ - Add Sonarqube tag using freshwater-frontend addons list [EEA Jenkins - [`3234347`](https://github.com/eea/volto-tableau/commit/3234347e524cc0ed4918242f503fe9e7dba266b2)]
203
226
  - Refs #142010 - Optimize Volto-addons gitflow pipelines [valentinab25 - [`d237e1c`](https://github.com/eea/volto-tableau/commit/d237e1c72817d7e68a3eb698563674d1514db24f)]
204
227
  ### [1.2.4](https://github.com/eea/volto-tableau/compare/1.2.3...1.2.4) - 25 October 2021
205
228
 
206
229
  #### :hammer_and_wrench: Others
207
230
 
231
+ - Add Sonarqube tag using frontend addons list [EEA Jenkins - [`2b19679`](https://github.com/eea/volto-tableau/commit/2b19679e2c7bcdc83082d1c73a595eea8b86d14f)]
232
+ - Add Sonarqube tag using frontend addons list [EEA Jenkins - [`384ccae`](https://github.com/eea/volto-tableau/commit/384ccaebed8c414a5c90eb96c6ce0a2b091f249c)]
233
+ - Add Sonarqube tag using frontend addons list [EEA Jenkins - [`589258e`](https://github.com/eea/volto-tableau/commit/589258e9b3cbba9cee37c57bb85ca5b707bc65d7)]
208
234
  ### [1.2.3](https://github.com/eea/volto-tableau/compare/1.2.2...1.2.3) - 14 June 2021
209
235
 
210
236
  #### :hammer_and_wrench: Others
package/Dockerfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # syntax=docker/dockerfile:1
2
2
  ARG VOLTO_VERSION
3
- FROM plone/frontend-builder:${VOLTO_VERSION}
3
+ FROM eeacms/frontend-builder:${VOLTO_VERSION}
4
4
 
5
5
  ARG ADDON_NAME
6
6
  ARG ADDON_PATH
package/Jenkinsfile CHANGED
@@ -1,16 +1,20 @@
1
1
  pipeline {
2
- agent any
2
+ agent {
3
+ node { label 'docker-host' }
4
+ }
3
5
 
4
6
  environment {
5
- GIT_NAME = "volto-tableau"
6
- NAMESPACE = "@eeacms"
7
- SONARQUBE_TAGS = "volto.eea.europa.eu,climate-energy.eea.europa.eu,forest.eea.europa.eu,biodiversity.europa.eu,water.europa.eu-freshwater,water.europa.eu-marine,industry.eea.europa.eu,demo-www.eea.europa.eu,www.eea.europa.eu-en"
8
- DEPENDENCIES = ""
9
- VOLTO = "16"
10
- }
7
+ GIT_NAME = "volto-tableau"
8
+ NAMESPACE = "@eeacms"
9
+ SONARQUBE_TAGS = "volto.eea.europa.eu,climate-energy.eea.europa.eu,forest.eea.europa.eu,biodiversity.europa.eu,water.europa.eu-freshwater,water.europa.eu-marine,industry.eea.europa.eu,demo-www.eea.europa.eu,www.eea.europa.eu-en"
10
+ DEPENDENCIES = ""
11
+ BACKEND_PROFILES = "eea.kitkat:testing"
12
+ BACKEND_ADDONS = ""
13
+ VOLTO = "16.24.0"
14
+ IMAGE_NAME = BUILD_TAG.toLowerCase()
15
+ }
11
16
 
12
17
  stages {
13
-
14
18
  stage('Release') {
15
19
  when {
16
20
  allOf {
@@ -20,52 +24,41 @@ pipeline {
20
24
  }
21
25
  steps {
22
26
  node(label: 'docker') {
23
- withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN'),string(credentialsId: 'eea-jenkins-npm-token', variable: 'NPM_TOKEN')]) {
24
- sh '''docker pull eeacms/gitflow'''
25
- sh '''docker run -i --rm --name="$BUILD_TAG-gitflow-master" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_NAME="$GIT_NAME" -e GIT_TOKEN="$GITHUB_TOKEN" -e NPM_TOKEN="$NPM_TOKEN" -e LANGUAGE=javascript eeacms/gitflow'''
27
+ withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN'), string(credentialsId: 'eea-jenkins-npm-token', variable: 'NPM_TOKEN')]) {
28
+ sh '''docker run -i --rm --pull always --name="$IMAGE_NAME-gitflow-master" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_NAME="$GIT_NAME" -e GIT_TOKEN="$GITHUB_TOKEN" -e NPM_TOKEN="$NPM_TOKEN" -e LANGUAGE=javascript eeacms/gitflow'''
26
29
  }
27
30
  }
28
31
  }
29
32
  }
30
33
 
31
- stage('Code') {
34
+ stage('Check if testing needed') {
32
35
  when {
33
36
  allOf {
34
- environment name: 'CHANGE_ID', value: ''
35
- not { changelog '.*^Automated release [0-9\\.]+$' }
36
37
  not { branch 'master' }
38
+ not { branch 'develop' }
39
+ environment name: 'CHANGE_ID', value: ''
37
40
  }
38
41
  }
39
42
  steps {
40
- parallel(
41
-
42
- "ES lint": {
43
- node(label: 'docker') {
44
- sh '''docker run -i --rm --name="$BUILD_TAG-eslint" -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e VOLTO=$VOLTO plone/volto-addon-ci eslint'''
45
- }
46
- },
47
-
48
- "Style lint": {
49
- node(label: 'docker') {
50
- sh '''docker run -i --rm --name="$BUILD_TAG-stylelint" -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e VOLTO=$VOLTO plone/volto-addon-ci stylelint'''
51
- }
52
- },
43
+ script {
44
+ withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN')]) {
45
+ check_result = sh script: '''docker run --pull always -i --rm --name="$IMAGE_NAME-gitflow-check" -e GIT_TOKEN="$GITHUB_TOKEN" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_ORG="$GIT_ORG" -e GIT_NAME="$GIT_NAME" eeacms/gitflow /check_if_testing_needed.sh''', returnStatus: true
53
46
 
54
- "Prettier": {
55
- node(label: 'docker') {
56
- sh '''docker run -i --rm --name="$BUILD_TAG-prettier" -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e VOLTO=$VOLTO plone/volto-addon-ci prettier'''
47
+ if (check_result == 0) {
48
+ env.SKIP_TESTS = 'yes'
49
+ }
57
50
  }
58
- }
59
- )
51
+ }
60
52
  }
61
53
  }
62
54
 
63
- stage('Tests') {
55
+ stage('Testing') {
64
56
  when {
65
57
  anyOf {
66
58
  allOf {
67
59
  not { environment name: 'CHANGE_ID', value: '' }
68
60
  environment name: 'CHANGE_TARGET', value: 'develop'
61
+ environment name: 'SKIP_TESTS', value: ''
69
62
  }
70
63
  allOf {
71
64
  environment name: 'CHANGE_ID', value: ''
@@ -73,26 +66,76 @@ pipeline {
73
66
  not { changelog '.*^Automated release [0-9\\.]+$' }
74
67
  branch 'master'
75
68
  }
69
+ environment name: 'SKIP_TESTS', value: ''
76
70
  }
77
71
  }
78
72
  }
79
- steps {
80
- parallel(
73
+ stages {
74
+ stage('Build test image') {
75
+ steps {
76
+ checkout scm
77
+ sh '''docker build --pull --build-arg="VOLTO_VERSION=$VOLTO" --build-arg="ADDON_NAME=$NAMESPACE/$GIT_NAME" --build-arg="ADDON_PATH=$GIT_NAME" . -t $IMAGE_NAME-frontend'''
78
+ }
79
+ }
80
+
81
+ stage('Fix code') {
82
+ when {
83
+ environment name: 'CHANGE_ID', value: ''
84
+ not { branch 'master' }
85
+ }
86
+ steps {
87
+ script {
88
+ fix_result = sh(script: '''docker run --name="$IMAGE_NAME-fix" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend ci-fix''', returnStatus: true)
89
+ sh '''docker cp $IMAGE_NAME-fix:/app/src/addons/$GIT_NAME/src .'''
90
+ sh '''docker rm -v $IMAGE_NAME-fix'''
91
+ FOUND_FIX = sh(script: '''git diff | wc -l''', returnStdout: true).trim()
81
92
 
82
- "Volto": {
83
- node(label: 'docker') {
84
- script {
85
- try {
86
- sh '''docker pull plone/volto-addon-ci'''
87
- sh '''docker run -i --name="$BUILD_TAG-volto" -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e VOLTO=$VOLTO plone/volto-addon-ci'''
88
- sh '''rm -rf xunit-reports'''
89
- sh '''mkdir -p xunit-reports'''
90
- sh '''docker cp $BUILD_TAG-volto:/opt/frontend/my-volto-project/coverage xunit-reports/'''
91
- sh '''docker cp $BUILD_TAG-volto:/opt/frontend/my-volto-project/junit.xml xunit-reports/'''
92
- sh '''docker cp $BUILD_TAG-volto:/opt/frontend/my-volto-project/unit_tests_log.txt xunit-reports/'''
93
- stash name: "xunit-reports", includes: "xunit-reports/**"
94
- archiveArtifacts artifacts: "xunit-reports/unit_tests_log.txt", fingerprint: true
95
- publishHTML (target : [
93
+ if (FOUND_FIX != '0') {
94
+ withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN')]) {
95
+ sh '''sed -i "s|url = .*|url = https://eea-jenkins:$GITHUB_TOKEN@github.com/eea/$GIT_NAME.git|" .git/config'''
96
+ }
97
+ sh '''git fetch origin $GIT_BRANCH:$GIT_BRANCH'''
98
+ sh '''git checkout $GIT_BRANCH'''
99
+ sh '''git add src/'''
100
+ sh '''git commit -m "style: Automated code fix" '''
101
+ sh '''git push --set-upstream origin $GIT_BRANCH'''
102
+ sh '''exit 1'''
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ stage('ES lint') {
109
+ steps {
110
+ sh '''docker run --rm --name="$IMAGE_NAME-eslint" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend lint'''
111
+ }
112
+ }
113
+
114
+ stage('Style lint') {
115
+ steps {
116
+ sh '''docker run --rm --name="$IMAGE_NAME-stylelint" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend stylelint'''
117
+ }
118
+ }
119
+
120
+ stage('Prettier') {
121
+ steps {
122
+ sh '''docker run --rm --name="$IMAGE_NAME-prettier" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend prettier'''
123
+ }
124
+ }
125
+
126
+ stage('Coverage Tests') {
127
+ parallel {
128
+
129
+ stage('Unit tests') {
130
+ steps {
131
+ script {
132
+ try {
133
+ sh '''docker run --name="$IMAGE_NAME-volto" --entrypoint=make --workdir=/app/src/addons/$GIT_NAME $IMAGE_NAME-frontend test-ci'''
134
+ sh '''rm -rf xunit-reports'''
135
+ sh '''mkdir -p xunit-reports'''
136
+ sh '''docker cp $IMAGE_NAME-volto:/app/coverage xunit-reports/'''
137
+ sh '''docker cp $IMAGE_NAME-volto:/app/junit.xml xunit-reports/'''
138
+ publishHTML(target : [
96
139
  allowMissing: false,
97
140
  alwaysLinkToLastBuild: true,
98
141
  keepAll: true,
@@ -105,75 +148,62 @@ pipeline {
105
148
  catchError(buildResult: 'SUCCESS', stageResult: 'SUCCESS') {
106
149
  junit testResults: 'xunit-reports/junit.xml', allowEmptyResults: true
107
150
  }
108
- sh script: '''docker rm -v $BUILD_TAG-volto''', returnStatus: true
151
+ sh script: '''docker rm -v $IMAGE_NAME-volto''', returnStatus: true
152
+ }
109
153
  }
110
154
  }
111
155
  }
112
- }
113
- )
114
- }
115
- }
156
+
157
+ stage('Integration tests') {
158
+ steps {
159
+ script {
160
+ try {
161
+ sh '''docker run --pull always --rm -d --name="$IMAGE_NAME-plone" -e SITE="Plone" -e PROFILES="$BACKEND_PROFILES" -e ADDONS="$BACKEND_ADDONS" eeacms/plone-backend'''
162
+ sh '''timeout -s 9 3600 docker run --shm-size=2g --cpu-quota=150000 --link $IMAGE_NAME-plone:plone --entrypoint=make --name="$IMAGE_NAME-cypress" --workdir=/app/src/addons/${GIT_NAME} -e "RAZZLE_INTERNAL_API_PATH=http://plone:8080/Plone" $IMAGE_NAME-frontend cypress-ci'''
163
+ } finally {
164
+ try {
165
+ sh '''rm -rf cypress-videos cypress-results cypress-coverage cypress-screenshots'''
166
+ sh '''mkdir -p cypress-videos cypress-results cypress-coverage cypress-screenshots'''
167
+ videos = sh script: '''docker cp $IMAGE_NAME-cypress:/app/src/addons/$GIT_NAME/cypress/videos cypress-videos/''', returnStatus: true
168
+ sh '''docker cp $IMAGE_NAME-cypress:/app/src/addons/$GIT_NAME/cypress/reports cypress-results/'''
169
+ screenshots = sh script: '''docker cp $IMAGE_NAME-cypress:/app/src/addons/$GIT_NAME/cypress/screenshots cypress-screenshots''', returnStatus: true
116
170
 
117
- stage('Integration tests') {
118
- when {
119
- anyOf {
120
- allOf {
121
- not { environment name: 'CHANGE_ID', value: '' }
122
- environment name: 'CHANGE_TARGET', value: 'develop'
123
- }
124
- allOf {
125
- environment name: 'CHANGE_ID', value: ''
126
- anyOf {
127
- not { changelog '.*^Automated release [0-9\\.]+$' }
128
- branch 'master'
129
- }
130
- }
131
- }
132
- }
133
- steps {
134
- parallel(
171
+ archiveArtifacts artifacts: 'cypress-screenshots/**', fingerprint: true, allowEmptyArchive: true
135
172
 
136
- "Cypress": {
137
- node(label: 'docker') {
138
- script {
139
- try {
140
- sh '''docker pull eeacms/plone-backend; docker run --rm -d --name="$BUILD_TAG-plone" -e SITE="Plone" -e PROFILES="eea.kitkat:testing" eeacms/plone-backend'''
141
- sh '''docker pull plone/volto-addon-ci; docker run -i --name="$BUILD_TAG-cypress" --link $BUILD_TAG-plone:plone -e NAMESPACE="$NAMESPACE" -e GIT_NAME=$GIT_NAME -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e DEPENDENCIES="$DEPENDENCIES" -e NODE_ENV=development -e VOLTO=$VOLTO plone/volto-addon-ci cypress'''
142
- } finally {
143
- try {
144
- sh '''rm -rf cypress-reports cypress-results cypress-coverage'''
145
- sh '''mkdir -p cypress-reports cypress-results cypress-coverage'''
146
- sh '''docker cp $BUILD_TAG-cypress:/opt/frontend/my-volto-project/src/addons/$GIT_NAME/cypress/videos cypress-reports/'''
147
- sh '''docker cp $BUILD_TAG-cypress:/opt/frontend/my-volto-project/src/addons/$GIT_NAME/cypress/reports cypress-results/'''
148
- coverage = sh script: '''docker cp $BUILD_TAG-cypress:/opt/frontend/my-volto-project/src/addons/$GIT_NAME/coverage cypress-coverage/''', returnStatus: true
149
- if ( coverage == 0 ) {
150
- publishHTML (target : [allowMissing: false,
173
+ coverage = sh script: '''docker cp $IMAGE_NAME-cypress:/app/src/addons/$GIT_NAME/coverage cypress-coverage''', returnStatus: true
174
+
175
+ if ( coverage == 0 ) {
176
+ publishHTML(target : [allowMissing: false,
151
177
  alwaysLinkToLastBuild: true,
152
178
  keepAll: true,
153
179
  reportDir: 'cypress-coverage/coverage/lcov-report',
154
180
  reportFiles: 'index.html',
155
181
  reportName: 'CypressCoverage',
156
182
  reportTitles: 'Integration Tests Code Coverage'])
157
- }
158
- sh '''touch empty_file; for ok_test in $(grep -E 'file=.*failures="0"' $(grep 'testsuites .*failures="0"' $(find cypress-results -name *.xml) empty_file | awk -F: '{print $1}') empty_file | sed 's/.* file="\\(.*\\)" time.*/\\1/' | sed 's#^cypress/integration/##g' | sed 's#^../../../node_modules/@eeacms/##g'); do rm -f cypress-reports/videos/$ok_test.mp4; rm -f cypress-reports/$ok_test.mp4; done'''
159
- archiveArtifacts artifacts: 'cypress-reports/**/*.mp4', fingerprint: true, allowEmptyArchive: true
160
- stash name: "cypress-coverage", includes: "cypress-coverage/**", allowEmpty: true
161
- }
162
- finally {
163
- catchError(buildResult: 'SUCCESS', stageResult: 'SUCCESS') {
183
+ }
184
+ if ( videos == 0 ) {
185
+ sh '''for file in $(find cypress-results -name *.xml); do if [ $(grep -E 'failures="[1-9].*"' $file | wc -l) -eq 0 ]; then testname=$(grep -E 'file=.*failures="0"' $file | sed 's#.* file=".*\\/\\(.*\\.[jsxt]\\+\\)" time.*#\\1#' ); rm -f cypress-videos/videos/$testname.mp4; fi; done'''
186
+ archiveArtifacts artifacts: 'cypress-videos/**/*.mp4', fingerprint: true, allowEmptyArchive: true
187
+ }
188
+ } finally {
189
+ catchError(buildResult: 'SUCCESS', stageResult: 'SUCCESS') {
164
190
  junit testResults: 'cypress-results/**/*.xml', allowEmptyResults: true
191
+ }
192
+ sh script: "docker stop $IMAGE_NAME-plone", returnStatus: true
193
+ sh script: "docker rm -v $IMAGE_NAME-plone", returnStatus: true
194
+ sh script: "docker rm -v $IMAGE_NAME-cypress", returnStatus: true
165
195
  }
166
- sh script: "docker stop $BUILD_TAG-plone", returnStatus: true
167
- sh script: "docker rm -v $BUILD_TAG-plone", returnStatus: true
168
- sh script: "docker rm -v $BUILD_TAG-cypress", returnStatus: true
169
-
170
196
  }
171
197
  }
172
198
  }
173
199
  }
174
200
  }
175
-
176
- )
201
+ }
202
+ }
203
+ post {
204
+ always {
205
+ sh script: "docker rmi $IMAGE_NAME-frontend", returnStatus: true
206
+ }
177
207
  }
178
208
  }
179
209
 
@@ -197,19 +227,14 @@ pipeline {
197
227
  }
198
228
  }
199
229
  steps {
200
- node(label: 'swarm') {
201
- script{
202
- checkout scm
203
- unstash "xunit-reports"
204
- unstash "cypress-coverage"
205
- def scannerHome = tool 'SonarQubeScanner';
206
- def nodeJS = tool 'NodeJS';
207
- withSonarQubeEnv('Sonarqube') {
208
- sh '''sed -i "s#/opt/frontend/my-volto-project/src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
209
- sh '''sed -i "s#src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
210
- sh "export PATH=${scannerHome}/bin:${nodeJS}/bin:$PATH; sonar-scanner -Dsonar.javascript.lcov.reportPaths=./xunit-reports/coverage/lcov.info,./cypress-coverage/coverage/lcov.info -Dsonar.sources=./src -Dsonar.projectKey=$GIT_NAME-$BRANCH_NAME -Dsonar.projectVersion=$BRANCH_NAME-$BUILD_NUMBER"
211
- sh '''try=2; while [ \$try -gt 0 ]; do curl -s -XPOST -u "${SONAR_AUTH_TOKEN}:" "${SONAR_HOST_URL}api/project_tags/set?project=${GIT_NAME}-${BRANCH_NAME}&tags=${SONARQUBE_TAGS},${BRANCH_NAME}" > set_tags_result; if [ \$(grep -ic error set_tags_result ) -eq 0 ]; then try=0; else cat set_tags_result; echo "... Will retry"; sleep 60; try=\$(( \$try - 1 )); fi; done'''
212
- }
230
+ script {
231
+ def scannerHome = tool 'SonarQubeScanner'
232
+ def nodeJS = tool 'NodeJS'
233
+ withSonarQubeEnv('Sonarqube') {
234
+ sh '''sed -i "s#/app/src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
235
+ sh '''sed -i "s#src/addons/${GIT_NAME}/##g" xunit-reports/coverage/lcov.info'''
236
+ sh "export PATH=${scannerHome}/bin:${nodeJS}/bin:$PATH; sonar-scanner -Dsonar.javascript.lcov.reportPaths=./xunit-reports/coverage/lcov.info,./cypress-coverage/coverage/lcov.info -Dsonar.sources=./src -Dsonar.projectKey=$GIT_NAME-$BRANCH_NAME -Dsonar.projectVersion=$BRANCH_NAME-$BUILD_NUMBER"
237
+ sh '''try=5; while [ \$try -gt 0 ]; do curl -s -XPOST -u "${SONAR_AUTH_TOKEN}:" "${SONAR_HOST_URL}api/project_tags/set?project=${GIT_NAME}-${BRANCH_NAME}&tags=${SONARQUBE_TAGS},${BRANCH_NAME}" > set_tags_result; if [ \$(grep -ic error set_tags_result ) -eq 0 ]; then try=0; else cat set_tags_result; echo "... Will retry"; sleep 15; try=\$(( \$try - 1 )); fi; done'''
213
238
  }
214
239
  }
215
240
  }
@@ -230,18 +255,15 @@ pipeline {
230
255
  }
231
256
  }
232
257
  steps {
233
- node(label: 'docker') {
234
- script {
235
- sh '''docker pull eeacms/gitflow'''
236
- sh '''echo "Error" > checkresult.txt'''
237
- catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
238
- sh '''set -o pipefail; docker run -i --rm --name="$BUILD_TAG-gitflow-sn" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_NAME="$GIT_NAME" eeacms/gitflow /checkSonarqubemaster.sh | grep -v "Found script" | tee checkresult.txt'''
239
- }
240
-
241
- publishChecks name: 'SonarQube', title: 'Sonarqube Code Quality Check', summary: "Quality check on the SonarQube metrics from branch develop, comparing it with the ones from master branch. No bugs are allowed",
242
- text: readFile(file: 'checkresult.txt'), conclusion: "${currentBuild.currentResult}",
243
- detailsURL: "${env.BUILD_URL}display/redirect"
258
+ script {
259
+ sh '''echo "Error" > checkresult.txt'''
260
+ catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
261
+ sh '''set -o pipefail; docker run -i --rm --pull always --name="$IMAGE_NAME-gitflow-sn" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_NAME="$GIT_NAME" eeacms/gitflow /checkSonarqubemaster.sh | grep -v "Found script" | tee checkresult.txt'''
244
262
  }
263
+
264
+ publishChecks name: 'SonarQube', title: 'Sonarqube Code Quality Check', summary: 'Quality check on the SonarQube metrics from branch develop, comparing it with the ones from master branch. No bugs are allowed',
265
+ text: readFile(file: 'checkresult.txt'), conclusion: "${currentBuild.currentResult}",
266
+ detailsURL: "${env.BUILD_URL}display/redirect"
245
267
  }
246
268
  }
247
269
  }
@@ -254,20 +276,16 @@ pipeline {
254
276
  environment name: 'CHANGE_TARGET', value: 'master'
255
277
  }
256
278
  steps {
257
- node(label: 'docker') {
258
- script {
259
- if ( env.CHANGE_BRANCH != "develop" ) {
260
- error "Pipeline aborted due to PR not made from develop branch"
261
- }
262
- withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN')]) {
263
- sh '''docker pull eeacms/gitflow'''
264
- sh '''docker run -i --rm --name="$BUILD_TAG-gitflow-pr" -e GIT_CHANGE_TARGET="$CHANGE_TARGET" -e GIT_CHANGE_BRANCH="$CHANGE_BRANCH" -e GIT_CHANGE_AUTHOR="$CHANGE_AUTHOR" -e GIT_CHANGE_TITLE="$CHANGE_TITLE" -e GIT_TOKEN="$GITHUB_TOKEN" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e GIT_ORG="$GIT_ORG" -e GIT_NAME="$GIT_NAME" -e LANGUAGE=javascript eeacms/gitflow'''
265
- }
279
+ script {
280
+ if (env.CHANGE_BRANCH != 'develop') {
281
+ error 'Pipeline aborted due to PR not made from develop branch'
282
+ }
283
+ withCredentials([string(credentialsId: 'eea-jenkins-token', variable: 'GITHUB_TOKEN')]) {
284
+ sh '''docker run --pull always -i --rm --name="$IMAGE_NAME-gitflow-pr" -e GIT_CHANGE_TARGET="$CHANGE_TARGET" -e GIT_CHANGE_BRANCH="$CHANGE_BRANCH" -e GIT_CHANGE_AUTHOR="$CHANGE_AUTHOR" -e GIT_CHANGE_TITLE="$CHANGE_TITLE" -e GIT_TOKEN="$GITHUB_TOKEN" -e GIT_BRANCH="$BRANCH_NAME" -e GIT_CHANGE_ID="$CHANGE_ID" -e GIT_ORG="$GIT_ORG" -e GIT_NAME="$GIT_NAME" -e LANGUAGE=javascript eeacms/gitflow'''
266
285
  }
267
286
  }
268
287
  }
269
288
  }
270
-
271
289
  }
272
290
 
273
291
  post {
@@ -289,4 +307,4 @@ pipeline {
289
307
  }
290
308
  }
291
309
  }
292
- }
310
+ }
package/Makefile CHANGED
@@ -50,6 +50,11 @@ VOLTO_VERSION?=16
50
50
  ADDON_PATH="${DIR}"
51
51
  ADDON_NAME="@eeacms/${ADDON_PATH}"
52
52
  DOCKER_COMPOSE=PLONE_VERSION=${PLONE_VERSION} VOLTO_VERSION=${VOLTO_VERSION} ADDON_NAME=${ADDON_NAME} ADDON_PATH=${ADDON_PATH} docker compose
53
+ RAZZLE_INTERNAL_API_PATH?="http://localhost:8080/Plone"
54
+ RAZZLE_DEV_PROXY_API_PATH?="${RAZZLE_INTERNAL_API_PATH}"
55
+ CYPRESS_API_PATH="${RAZZLE_DEV_PROXY_API_PATH}"
56
+
57
+
53
58
 
54
59
  # Top-level targets
55
60
  .PHONY: all
@@ -77,11 +82,11 @@ shell: ## Start a shell in the frontend container
77
82
 
78
83
  .PHONY: cypress-open
79
84
  cypress-open: ## Open cypress integration tests
80
- NODE_ENV=development $(NODE_MODULES)/cypress/bin/cypress open
85
+ CYPRESS_API_PATH="${RAZZLE_DEV_PROXY_API_PATH}" NODE_ENV=development $(NODE_MODULES)/cypress/bin/cypress open
81
86
 
82
87
  .PHONY: cypress-run
83
88
  cypress-run: ## Run cypress integration tests
84
- NODE_ENV=development $(NODE_MODULES)/cypress/bin/cypress run
89
+ CYPRESS_API_PATH="${RAZZLE_DEV_PROXY_API_PATH}" NODE_ENV=development $(NODE_MODULES)/cypress/bin/cypress run --browser chromium
85
90
 
86
91
  .PHONY: test
87
92
  test: ## Run jest tests
@@ -129,3 +134,31 @@ i18n: ## i18n
129
134
  help: ## Show this help.
130
135
  @echo -e "$$(grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | sed -e 's/:.*##\s*/:/' -e 's/^\(.\+\):\(.*\)/\\x1b[36m\1\\x1b[m:\2/' | column -c2 -t -s :)"
131
136
  head -n 14 Makefile
137
+
138
+ .PHONY: ci-fix
139
+ ci-fix:
140
+ echo "Running lint-fix"
141
+ make lint-fix
142
+ echo "Running prettier-fix"
143
+ make prettier-fix
144
+ echo "Running stylelint-fix"
145
+ make stylelint-fix
146
+
147
+ .PHONY: test-ci
148
+ test-ci:
149
+ cd /app
150
+ RAZZLE_JEST_CONFIG=src/addons/${ADDON_PATH}/jest-addon.config.js CI=true yarn test src/addons/${ADDON_PATH}/src --watchAll=false --reporters=default --reporters=jest-junit --collectCoverage --coverageReporters lcov cobertura text
151
+
152
+ .PHONY: start-ci
153
+ start-ci:
154
+ cd ../..
155
+ yarn start &
156
+
157
+ .PHONY: cypress-ci
158
+ cypress-ci:
159
+ cp .coverage.babel.config.js /app/babel.config.js
160
+ make start-ci
161
+ $(NODE_MODULES)/.bin/wait-on -t 240000 http://localhost:3000
162
+ NODE_ENV=development make cypress-run
163
+
164
+
package/cypress.config.js CHANGED
@@ -5,9 +5,9 @@ module.exports = defineConfig({
5
5
  defaultCommandTimeout: 8888,
6
6
  chromeWebSecurity: false,
7
7
  reporter: 'junit',
8
- video: true,
8
+ video: false,
9
9
  retries: {
10
- runMode: 1,
10
+ runMode: 2,
11
11
  openMode: 0,
12
12
  },
13
13
  reporterOptions: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/volto-tableau",
3
- "version": "6.0.0",
3
+ "version": "6.0.1",
4
4
  "description": "@eeacms/volto-tableau: Volto add-on",
5
5
  "main": "src/index.js",
6
6
  "author": "European Environment Agency: IDM2 A-Team",
@@ -1,12 +1,10 @@
1
1
  import React from 'react';
2
- import { PrivacyProtection } from '@eeacms/volto-embed';
3
- import Tableau from '@eeacms/volto-tableau/Tableau/Tableau';
4
-
5
- import { flattenToAppURL } from '@plone/volto/helpers';
6
- import { getContent } from '@plone/volto/actions';
7
-
8
2
  import { connect } from 'react-redux';
9
3
  import { compose } from 'redux';
4
+ import { flattenToAppURL } from '@plone/volto/helpers';
5
+ import { getContent } from '@plone/volto/actions';
6
+ import { PrivacyProtection } from '@eeacms/volto-embed';
7
+ import Tableau from '@eeacms/volto-tableau/Tableau/Tableau';
10
8
 
11
9
  const View = (props) => {
12
10
  const data = props.data;
@@ -16,7 +14,7 @@ const View = (props) => {
16
14
  with_more_info = true,
17
15
  with_download = true,
18
16
  with_share = true,
19
- tableau_height = '700',
17
+ tableau_height,
20
18
  } = data;
21
19
  const { figure_note = [], data_provenance = {}, tableau_visualization } =
22
20
  props.tableau_visualization_data || {};
@@ -31,7 +29,7 @@ const View = (props) => {
31
29
  }, [tableau_vis_url]);
32
30
 
33
31
  return (
34
- <div className="embed-container">
32
+ <div className="embed-tableau">
35
33
  <PrivacyProtection
36
34
  {...props}
37
35
  data={{ ...data, url: tableau_visualization?.url }}
@@ -39,6 +39,6 @@ describe('View', () => {
39
39
  <View data={data} />
40
40
  </Provider>,
41
41
  );
42
- expect(container.querySelector('.embed-container')).toBeInTheDocument();
42
+ expect(container.querySelector('.embed-tableau')).toBeInTheDocument();
43
43
  });
44
44
  });