Skip to content

Commit

Permalink
feat: 100.1.0 (#2286)
Browse files Browse the repository at this point in the history
* chore(deps): bump tar from 4.4.13 to 4.4.19 (#1946)

Bumps [tar](https://github.com/npm/node-tar) from 4.4.13 to 4.4.19.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](isaacs/node-tar@v4.4.13...v4.4.19)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: set v100.0.0

* feat: support non-gregorian fixed periods (#2233)

* feat: support non-gregorian fixed periods

* test: fix test failing due to change in single value behaviour

---------

Co-authored-by: Jan Henrik Øverland <janhenrik.overland@gmail.com>

* chore: prepare app for continuous delivery

* fix: remove old i18n initialisation (#2241)

All the old i18n files have been removed already, but because
the D2Shim had the i18nRoot prop, the app tries to load the en property
file which does not exist.

* fix: dependency updates (#2243)

* fix: update cli-app-scripts and analytics deps

* fix: set height on chart container when not defined (#2246)

This fixes a cutoff issue in dashboard.
It didn't affect the app, where everything still seems to work fine.

* fix: update cli-app-scripts and analytics (#2247)

The gray background in the initial loading spinner is removed
(cli-app-scripts).

More fixes to FileMenu -> GetLink (analytics).

* chore: add styled-jsx which is a peer dependency (#2253)

@dhis2/ui lists styled-jsx as a peer dependency.
Not having it in package.json results in a bunch of warnings during yarn install

* chore(deps): bump webpack from 5.74.0 to 5.76.2 (#2248)

Bumps [webpack](https://github.com/webpack/webpack) from 5.74.0 to 5.76.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](webpack/webpack@v5.74.0...v5.76.2)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jen Jones Arnesen <jennifer@dhis2.org>

* chore(deps): bump async from 2.6.3 to 2.6.4 (#2148)

Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](caolan/async@v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jen Jones Arnesen <jennifer@dhis2.org>

* chore(deps): bump moment from 2.29.2 to 2.29.4 (#2122)

Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](moment/moment@2.29.2...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jen Jones Arnesen <jennifer@dhis2.org>

* fix: target window.parent for postRobot communication (#2256)

This solves the issue of plugin communication not working in Cypress,
where the app runs in an iframe and window.top is not the app window but
some Cypress window.
window.parent targets the window immediately above the plugin window.

* chore(deps): bump ansi-regex from 3.0.0 to 3.0.1 (#2191)

Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](chalk/ansi-regex@v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jen Jones Arnesen <jennifer@dhis2.org>

* chore(deps): bump @sideway/formula from 3.0.0 to 3.0.1 (#2245)

Bumps [@sideway/formula](https://github.com/sideway/formula) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sideway/formula/releases)
- [Commits](hapijs/formula@v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: "@sideway/formula"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump http-cache-semantics from 4.1.0 to 4.1.1 (#2234)

Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](kornelski/http-cache-semantics@v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump json5 from 1.0.1 to 1.0.2 (#2228)

Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump qs from 6.5.2 to 6.5.3 (#2220)

Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.5.2...v6.5.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump handlebars from 4.7.6 to 4.7.7 (#1995)

Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.7.6 to 4.7.7.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md)
- [Commits](handlebars-lang/handlebars.js@v4.7.6...v4.7.7)

---
updated-dependencies:
- dependency-name: handlebars
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump trim-off-newlines from 1.0.1 to 1.0.3 (#1988)

Bumps [trim-off-newlines](https://github.com/stevemao/trim-off-newlines) from 1.0.1 to 1.0.3.
- [Release notes](https://github.com/stevemao/trim-off-newlines/releases)
- [Commits](stevemao/trim-off-newlines@v1.0.1...v1.0.3)

---
updated-dependencies:
- dependency-name: trim-off-newlines
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(translations): sync translations from transifex (master) (#2192)

* fix(translations): sync translations from transifex (master)

* fix(translations): sync translations from transifex (master)

* fix(translations): sync translations from transifex (master)

* fix(translations): sync translations from transifex (master)

---------

Co-authored-by: Jen Jones Arnesen <jennifer@dhis2.org>

* chore(deps): bump ws from 5.2.2 to 5.2.3 (#1947)

Bumps [ws](https://github.com/websockets/ws) from 5.2.2 to 5.2.3.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](websockets/ws@5.2.2...5.2.3)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump tmpl from 1.0.4 to 1.0.5 (#1945)

Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: configure continuous delivery workflows (#2254)

There are 4 workflows:

verify PR (dhis2-verify-app.yml)
-- build, lint, test, e2e-prod

verify commit to dev (dhis2-verify-app.yml)
-- build, lint, test, e2e-prod, report-failure-to-slack

verify commit to master (dhis2-verify-app.yml)
-- build, lint, test, e2e-prod, release, report-failure-to-slack

nightly (nightly.yml)
-- e2e-dev, report-failure

In addition:

* e2e-prod and e2e-dev are reusable workflows and are called from dhis2-verify-app and nightly.
* removed uses: c-hive/gha-yarn-cache@v1 since it is deprecated and setup-node handles that work.
* updated action versions and node versions
* cypress test version tagging for features and bugs has been added (copied from line-list)

* feat: single value background color change based upon legend (DHIS2-13702) (#2223)

* fix: inject CSS UI variables in plugin (#2270)

* fix: nightly workflow has to run on default branch which is currently dev (#2269)

nightly workflow is triggered by workflow_dispatch, so it only runs on the default branch (dev)

---------

Co-authored-by: Jan Henrik Øverland <janhenrik.overland@gmail.com>

* feat: implement data icon option for SV visualization (DHIS2-10496) (#2236)

* fix: do not pass a boolean for icons when saving

If the option is not set, and thus its value is the same as the default
(false) remove it from the current object to avoid sending a boolean
value that the backend does not expect.
This was causing any save to return 500.

* fix: hide icon from visualization when option is toggled

This didn't work before because the icons option was removed from the
options object, but when the current object was merged with
the new options, it retained the original value.

* fix: fetch data element icon and pass it in extraOptions

This is needed for SV visualizations when the "Show data item icon"
options is checked and an icon is assigned to the dx dimension in the
maintenance app.
In that case the icon's SVG is fetched from the API and passed to the
visualization API in the extraOptions object.
The SVG generator embeds the icon in the SVG so it appears on the side
of the value.

* feat: custom calculations (DHIS2-13871) (#2232)

* chore: bump analytics (#2276)

* feat(plugin): send installation status [DHIS2-15097] (#2273)

* feat(plugin): send installation status

* fix(deps): bump cli-app-scripts for precaching improvement

---------

Co-authored-by: Jan Henrik Øverland <janhenrik.overland@gmail.com>

* chore: bump analytics (#2279)

* chore: converge master-to-dev (#2281)

* chore: prepare app for continuous delivery
BREAKING CHANGE: v100.0.0

* chore: trigger v100.0.0 (#2237)

* chore(release): cut 100.0.0

# [100.0.0](v99.0.0...v100.0.0) (2023-02-27)

### chore

* prepare app for continuous delivery ([8db6c88](8db6c88))

### BREAKING CHANGES

* v100.0.0

* fix: set height on chart container when not defined (#2246) (#2250)

This fixes a cutoff issue in dashboard.
It didn't affect the app, where everything still seems to work fine.

Co-authored-by: Edoardo Sabadelli <edoardo@dhis2.org>

* chore(release): cut 100.0.1

## [100.0.1](v100.0.0...v100.0.1) (2023-03-23)

### Bug Fixes

* set height on chart container when not defined ([#2246](#2246)) ([#2250](#2250)) ([a922569](a922569))

* fix: remove translucent layer by using app-scripts 10.3.4 (DHIS2-15008) (#2251)

* chore(release): cut 100.0.2

## [100.0.2](v100.0.1...v100.0.2) (2023-03-27)

### Bug Fixes

* remove translucent layer by using app-scripts 10.3.4 (DHIS2-15008) ([#2251](#2251)) ([9d62ca7](9d62ca7))

* chore(deps-dev): bump loglevel from 1.7.1 to 1.8.1 (#2199)

Bumps [loglevel](https://github.com/pimterry/loglevel) from 1.7.1 to 1.8.1.
- [Release notes](https://github.com/pimterry/loglevel/releases)
- [Commits](pimterry/loglevel@v1.7.1...v1.8.1)

---
updated-dependencies:
- dependency-name: loglevel
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump reselect from 4.0.0 to 4.1.7 (#2229)

Bumps [reselect](https://github.com/reduxjs/reselect) from 4.0.0 to 4.1.7.
- [Release notes](https://github.com/reduxjs/reselect/releases)
- [Changelog](https://github.com/reduxjs/reselect/blob/master/CHANGELOG.md)
- [Commits](reduxjs/reselect@v4.0.0...v4.1.7)

---
updated-dependencies:
- dependency-name: reselect
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: plugin sends installation status (#2277)

Co-authored-by: Kai Vandivier <49666798+KaiVandivier@users.noreply.github.com>

* chore(release): cut 100.0.3

## [100.0.3](v100.0.2...v100.0.3) (2023-05-03)

### Bug Fixes

* plugin sends installation status ([#2277](#2277)) ([de989c3](de989c3))

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: @dhis2-bot <apps@dhis2.org>
Co-authored-by: Edoardo Sabadelli <edoardo@dhis2.org>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kai Vandivier <49666798+KaiVandivier@users.noreply.github.com>

* test: add extended timeout for file open modal (#2284)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mozafar <kabaros@gmail.com>
Co-authored-by: Edoardo Sabadelli <edoardo@dhis2.org>
Co-authored-by: Jen Jones Arnesen <jennifer@dhis2.org>
Co-authored-by: @dhis2-bot <apps@dhis2.org>
Co-authored-by: Martin <martin@moid.se>
Co-authored-by: Kai Vandivier <49666798+KaiVandivier@users.noreply.github.com>
  • Loading branch information
8 people committed May 5, 2023
1 parent c303c55 commit 334b13d
Show file tree
Hide file tree
Showing 59 changed files with 4,566 additions and 1,149 deletions.
135 changes: 59 additions & 76 deletions .github/workflows/dhis2-verify-app.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
name: 'dhis2: verify (app)'

# Requirements:
#
# - Org secrets:
# DHIS2_BOT_GITHUB_TOKEN
# DHIS2_BOT_APPHUB_TOKEN
# - Enable the 'jobs.e2e' section if applicable
# - Customize the properties if needed:
# 'jobs.release.steps.*.cwd'
# 'jobs.release.steps.*.build-dir'

on: push
on:
pull_request:
types: ['opened', 'edited', 'reopened', 'synchronize']
push:
branches:
- 'master'
- 'dev'

concurrency:
group: ${{ github.workflow}}-${{ github.ref }}
Expand All @@ -26,18 +22,18 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14.x
node-version: 18.x

- uses: c-hive/gha-yarn-cache@v1
- run: yarn install --frozen-lockfile
- name: Install
run: yarn install --frozen-lockfile

- name: Build
run: yarn d2-app-scripts build

- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v3
with:
name: app-build
path: |
Expand All @@ -48,16 +44,14 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14.x
node-version: 18.x

- uses: c-hive/gha-yarn-cache@v1
- run: yarn install --frozen-lockfile
- name: Install
run: yarn install --frozen-lockfile

# Can be removed if translations aren't required for tests,
# or if not using the App Platform
- name: Generate translations
run: yarn d2-app-scripts i18n generate

Expand All @@ -67,79 +61,51 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14.x
node-version: 18.x

- uses: c-hive/gha-yarn-cache@v1
- run: yarn install --frozen-lockfile
- name: Install
run: yarn install --frozen-lockfile

# Can be removed if translations aren't required for tests,
# or if not using the App Platform
- name: Generate translations
run: yarn d2-app-scripts i18n generate

- name: Test
run: yarn d2-app-scripts test

e2e:
runs-on: ubuntu-latest
if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'"

strategy:
fail-fast: false
matrix:
containers: [1, 2, 3, 4]

steps:
- name: Checkout
uses: actions/checkout@v2

- uses: actions/setup-node@v1
with:
node-version: 14.x

- name: End-to-End tests
uses: cypress-io/github-action@v2
with:
start: yarn d2-app-scripts start
wait-on: 'http://localhost:3000'
wait-on-timeout: 300
record: true
video: true
parallel: true
browser: chrome
headless: true
env:
BROWSER: none
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_dhis2BaseUrl: ${{ secrets.CYPRESS_DHIS2_BASE_URL_DEV }}
CYPRESS_dhis2Username: ${{ secrets.CYPRESS_DHIS2_USERNAME }}
CYPRESS_dhis2Password: ${{ secrets.CYPRESS_DHIS2_PASSWORD }}
CYPRESS_networkMode: live
call-workflow-e2e-prod:
needs: [build, lint, test]
uses: ./.github/workflows/e2e-prod.yml
secrets:
baseurl: ${{ secrets.CYPRESS_DHIS2_BASE_URL_DEV }}
username: ${{ secrets.CYPRESS_DHIS2_USERNAME }}
password: ${{ secrets.CYPRESS_DHIS2_PASSWORD }}
recordkey: ${{ secrets.CYPRESS_RECORD_KEY }}

release:
runs-on: ubuntu-latest
needs: [build, lint, test, e2e]
if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'"
needs: call-workflow-e2e-prod
if: |
!github.event.push.repository.fork &&
github.actor != 'dependabot[bot]' &&
github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }}

- uses: actions/setup-node@v1
- uses: actions/setup-node@v3
with:
node-version: 14.x
node-version: 18.x

- uses: actions/download-artifact@v2
- uses: actions/download-artifact@v3
with:
name: app-build

# ensure that d2-app-scripts is available
- uses: c-hive/gha-yarn-cache@v1
- run: yarn install --frozen-lockfile
- name: Install
run: yarn install --frozen-lockfile

- uses: dhis2/action-semantic-release@master
with:
Expand All @@ -152,3 +118,20 @@ jobs:
with:
build-dir: build/app
github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }}

report-release-failure:
runs-on: ubuntu-latest
needs: release
if: |
failure() &&
!cancelled() &&
github.ref == 'refs/heads/master'
steps:
- name: Send failure message to analytics-internal-bot slack channel
id: slack
uses: slackapi/slack-github-action@v1.23.0
with:
channel-id: ${{ secrets.SLACK_CHANNEL_ID }}
slack-message: ':small_red_triangle_down: Data-visualizer-app release <https://github.com/dhis2/data-visualizer-app/actions/workflows/dhis2-verify-app.yml?query=branch%3Amaster+is%3Afailure>'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
76 changes: 76 additions & 0 deletions .github/workflows/e2e-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: 'e2e-dev'

on:
workflow_call:
secrets:
baseurl:
required: true
username:
required: true
password:
required: true
recordkey:
required: true

concurrency:
group: e2e-dev-${{ github.workflow}}-${{ github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
compute-dev-version:
if: "!github.event.push.repository.fork && (github.event.pull_request.draft == false || github.action == 'workflow_dispatch')"
runs-on: ubuntu-latest
outputs:
version: ${{ steps.instance-version.outputs.version }}
steps:
- name: Output dev version
id: instance-version
uses: dhis2/action-instance-version@v1
with:
instance-url: ${{ secrets.baseurl }}
username: ${{ secrets.username }}
password: ${{ secrets.password }}

e2e-dev:
needs: compute-dev-version
runs-on: ubuntu-latest
container:
image: cypress/browsers:node16.17.0-chrome106
options: --user 1001

strategy:
fail-fast: false
matrix:
containers: [1, 2, 3, 4]

steps:
- name: Checkout
uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18.x

- name: Run e2e tests
uses: cypress-io/github-action@v5
with:
start: yarn d2-app-scripts start
wait-on: 'http://localhost:3000'
wait-on-timeout: 300
record: true
parallel: true
browser: chrome
group: e2e-chrome-parallel-dev
env:
BROWSER: none
CYPRESS_RECORD_KEY: ${{ secrets.recordkey }}
CYPRESS_dhis2BaseUrl: ${{ secrets.baseurl }}
CYPRESS_dhis2InstanceVersion: ${{ needs.compute-dev-version.outputs.version }}
CYPRESS_dhis2Username: ${{ secrets.username }}
CYPRESS_dhis2Password: ${{ secrets.password }}
CYPRESS_networkMode: live
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
119 changes: 119 additions & 0 deletions .github/workflows/e2e-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: 'e2e-prod'

# Requirements:
#
# - Customize environment variables:
# BASE_URL_INSTANCES: Set the base url for the instances, e.g. https://test.e2e.dhis2.org
# NAME_PATTERN_PROD_INSTANCES: Set the name pattern for your instances. {version} will be replaced by "[majorVersion].[minorVersion]"
# NAME_PATTERN_DEV_INSTANCE: Set the name pattern for your dev instance. {version} will be replaced by "dev"
#
# - Other optional customizations:
# containers: Set the matrix containers array for the e2e-prod job. The number of parallel Cypress instances running for each backend version will equal the array length.
#
# - Set status check as required:
# We recommend setting "e2e-tests-success" as a required step in your workflow.

on:
workflow_call:
secrets:
baseurl:
required: true
username:
required: true
password:
required: true
recordkey:
required: true

env:
BASE_URL_INSTANCES: https://test.e2e.dhis2.org
NAME_PATTERN_PROD_INSTANCES: 'analytics-{version}'
NAME_PATTERN_DEV_INSTANCE: analytics-dev

concurrency:
group: e2e-prod-${{ github.workflow}}-${{ github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
compute-prod-versions:
if: "!github.event.push.repository.fork && (github.event.pull_request.draft == false || github.action == 'workflow_dispatch')"
runs-on: ubuntu-latest
outputs:
versions: ${{ steps.prod-versions.outputs.versions }}
steps:
- name: Compute dev instance url
id: instance-url
run: |
url=${BASE_URL_INSTANCES%/}/${NAME_PATTERN_DEV_INSTANCE/"{version}"/dev}
echo "url=$url" >> $GITHUB_OUTPUT
echo "url: $url"
- uses: actions/checkout@v3

- name: Output prod version urls
id: prod-versions
uses: dhis2/action-supported-legacy-versions@v1
with:
instance-url-latest: ${{ steps.instance-url.outputs.url }} # can be removed if maxDHIS2Version has been specified
username: ${{ secrets.username }}
password: ${{ secrets.password }}

e2e-prod:
needs: compute-prod-versions
runs-on: ubuntu-latest
container:
image: cypress/browsers:node16.17.0-chrome106
options: --user 1001
strategy:
fail-fast: false
matrix:
versions: ${{ fromJSON(needs.compute-prod-versions.outputs.versions) }}
containers: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18.x

- name: Compute prod instance url
id: instance-url
run: |
url=${BASE_URL_INSTANCES%/}/${NAME_PATTERN_PROD_INSTANCES/"{version}"/$version}
echo "url=$url" >> $GITHUB_OUTPUT
echo "url: $url"
env:
version: ${{ matrix.versions }}

- name: Run e2e tests
uses: cypress-io/github-action@v5
with:
start: yarn d2-app-scripts start
wait-on: 'http://localhost:3000'
wait-on-timeout: 300
record: true
parallel: true
browser: chrome
group: e2e-chrome-parallel-${{ matrix.versions }}
env:
CI: true
BROWSER: none
CYPRESS_RECORD_KEY: ${{ secrets.recordkey }}
CYPRESS_dhis2BaseUrl: ${{ steps.instance-url.outputs.url }}
CYPRESS_dhis2InstanceVersion: ${{matrix.versions}}
CYPRESS_dhis2Username: ${{ secrets.username }}
CYPRESS_dhis2Password: ${{ secrets.password }}
CYPRESS_networkMode: live
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

e2e-tests-success:
needs: e2e-prod
if: ${{ success() || failure() }}
runs-on: ubuntu-latest
steps:
- run: if [ $result != 'success' ]; then exit 1; fi;
env:
result: ${{ needs.e2e-prod.result }}
Loading

0 comments on commit 334b13d

Please sign in to comment.