Three review points. attachExcelFile read '.clr-abort-modal .modal-title' unconditionally, so an upload that raised no abort modal failed on the lookup, and the abort branch then left the modal open for the next command to click through. It asks the body first: no abort modal means confirm the upload; an abort modal means assert its title is not an Abort Message and stop there. openDownloadModal clicked the deepest element holding the text. The click handler sits on the div[clrDropdownItem], so the item is selected by that attribute and its text. The spec list comment claimed download leaves nothing for later specs to trip over. It seeds the approval it needs and that approval stays, which the comment now says.
53 lines
2.5 KiB
Bash
Executable File
53 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# The Cypress specs CI runs, and the order they run in.
|
|
#
|
|
# ORDER MATTERS. These specs share one mock estate that is seeded once per job,
|
|
# so several of them depend on the state they find:
|
|
#
|
|
# - csv-limited asserts the free-tier "Locked Feature" modal, which an earlier
|
|
# spec can remove by planting a valid licence. It has always run first.
|
|
# - hook-programs asserts that an edit raises an approval row against its
|
|
# target table; it runs early, before other specs have added rows to the
|
|
# approval tables.
|
|
#
|
|
# Specs added later are appended rather than inserted, so the sequence that was
|
|
# known green keeps its shape. metanav is deliberately absent - see
|
|
# https://git.datacontroller.io/dc/dc/issues/395.
|
|
#
|
|
# download was held out while its selectors were stale - see
|
|
# https://git.datacontroller.io/dc/dc/issues/398. Its first case uploads a fixture
|
|
# to mpe_x_test and submits it, so it creates the approval it downloads instead of
|
|
# depending on what earlier specs leave behind - but the approval stays behind.
|
|
# It is appended because a spec added later goes on the end rather than reordering
|
|
# the sequence that was known green.
|
|
set -euo pipefail
|
|
|
|
SPECS="csv-limited hook-programs liveness editor excel-multi-load excel csv filtering filter-panel licensing viewer-labels full-table-search viewbox stage browser-info ddl-export row-cell-limits derived-variables startupservice-launcher coltype-delete-record submitted-details embed-va download"
|
|
|
|
# Specs that exist but are held out of CI, each with the reason. Listed here so
|
|
# the coverage check below can tell a deliberate exclusion from a forgotten file.
|
|
EXCLUDED="metanav"
|
|
|
|
case "${1:-}" in
|
|
all)
|
|
# comma separated, the form `cypress run --spec` takes
|
|
for name in $SPECS; do printf 'cypress/e2e/%s.cy.ts,' "$name"; done | sed 's/,$//'
|
|
;;
|
|
coverage)
|
|
on_disk=$(cd "$2/client" && ls cypress/e2e/*.cy.ts | xargs -n1 basename | sed 's/\.cy\.ts$//' | sort)
|
|
listed=$(printf '%s\n' $SPECS $EXCLUDED | sort)
|
|
missing=$(comm -23 <(echo "$on_disk") <(echo "$listed"))
|
|
if [ -n "$missing" ]; then
|
|
echo "Specs that are neither run nor explicitly excluded:"
|
|
echo "$missing"
|
|
echo "Add them to SPECS (or EXCLUDED, with a reason) in .gitea/scripts/cypress-specs.sh"
|
|
exit 1
|
|
fi
|
|
echo "All $(echo "$on_disk" | wc -l) specs are accounted for: $(echo $SPECS | wc -w) run, $(echo $EXCLUDED | wc -w) excluded."
|
|
;;
|
|
*)
|
|
echo "usage: $0 {all|coverage <repo-root>}" >&2
|
|
exit 2
|
|
;;
|
|
esac
|