E2E/Test: Fix smoke tests (#31332)
* add passwd for psql local query and add server/postgres logs for debugging * set license for smoke tests * fix fmt
Этот коммит содержится в:
2
.github/workflows/e2e-tests-ci.yml
поставляемый
2
.github/workflows/e2e-tests-ci.yml
поставляемый
@@ -15,3 +15,5 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
commit_sha: "${{ inputs.commit_sha }}"
|
commit_sha: "${{ inputs.commit_sha }}"
|
||||||
status_check_context: "E2E Tests/smoketests"
|
status_check_context: "E2E Tests/smoketests"
|
||||||
|
secrets:
|
||||||
|
MM_LICENSE: "${{ secrets.MM_E2E_TEST_LICENSE_ONPREM_ENT }}"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ cd "$(dirname "$0")"
|
|||||||
if [ "$TYPE" = "PR" ]; then
|
if [ "$TYPE" = "PR" ]; then
|
||||||
# In this case, we expect the PR number to be present in the BRANCH variable
|
# In this case, we expect the PR number to be present in the BRANCH variable
|
||||||
BRANCH_REGEX='^server-pr-[0-9]+$'
|
BRANCH_REGEX='^server-pr-[0-9]+$'
|
||||||
if ! grep -qE "${BRANCH_REGEX}"<<<"$BRANCH"; then
|
if ! grep -qE "${BRANCH_REGEX}" <<<"$BRANCH"; then
|
||||||
mme2e_log "Error: when using TYPE=PR, the BRANCH variable should respect regex '$BRANCH_REGEX'. Aborting." >&2
|
mme2e_log "Error: when using TYPE=PR, the BRANCH variable should respect regex '$BRANCH_REGEX'. Aborting." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -56,20 +56,27 @@ if [ -n "${TM4J_API_KEY:-}" ]; then
|
|||||||
# Assert that the test type is among the ones supported by Zephyr, and select the corresponding folderId
|
# Assert that the test type is among the ones supported by Zephyr, and select the corresponding folderId
|
||||||
case "${SERVER}-${TYPE}" in
|
case "${SERVER}-${TYPE}" in
|
||||||
onprem-RELEASE)
|
onprem-RELEASE)
|
||||||
export TM4J_FOLDER_ID="2014475" ;;
|
export TM4J_FOLDER_ID="2014475"
|
||||||
|
;;
|
||||||
onprem-MASTER)
|
onprem-MASTER)
|
||||||
export TM4J_FOLDER_ID="2014476" ;;
|
export TM4J_FOLDER_ID="2014476"
|
||||||
|
;;
|
||||||
onprem-MASTER_UNSTABLE)
|
onprem-MASTER_UNSTABLE)
|
||||||
export TM4J_FOLDER_ID="2014478" ;;
|
export TM4J_FOLDER_ID="2014478"
|
||||||
|
;;
|
||||||
cloud-RELEASE)
|
cloud-RELEASE)
|
||||||
export TM4J_FOLDER_ID="2014474" ;;
|
export TM4J_FOLDER_ID="2014474"
|
||||||
|
;;
|
||||||
cloud-CLOUD)
|
cloud-CLOUD)
|
||||||
export TM4J_FOLDER_ID="2014479" ;;
|
export TM4J_FOLDER_ID="2014479"
|
||||||
|
;;
|
||||||
cloud-CLOUD_UNSTABLE)
|
cloud-CLOUD_UNSTABLE)
|
||||||
export TM4J_FOLDER_ID="2014481" ;;
|
export TM4J_FOLDER_ID="2014481"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
mme2e_log "Error: unsupported Zephyr environment for the requested report (SERVER=${SERVER}, TYPE=${TYPE}). Aborting." >&2
|
mme2e_log "Error: unsupported Zephyr environment for the requested report (SERVER=${SERVER}, TYPE=${TYPE}). Aborting." >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
: ${TEST_CYCLE_LINK_PREFIX:?}
|
: ${TEST_CYCLE_LINK_PREFIX:?}
|
||||||
: ${TM4J_CYCLE_KEY:-} # Optional. Populated automatically by the reporting script
|
: ${TM4J_CYCLE_KEY:-} # Optional. Populated automatically by the reporting script
|
||||||
@@ -97,11 +104,11 @@ if [ ! -d "results/" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
case "$TEST" in
|
case "$TEST" in
|
||||||
cypress)
|
cypress)
|
||||||
npm i
|
npm i
|
||||||
node save_report.js
|
node save_report.js
|
||||||
;;
|
;;
|
||||||
playwright)
|
playwright)
|
||||||
if [ -n "$WEBHOOK_URL" ]; then
|
if [ -n "$WEBHOOK_URL" ]; then
|
||||||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i
|
||||||
# Utilize environment data and report files to generate the webhook body
|
# Utilize environment data and report files to generate the webhook body
|
||||||
|
|||||||
@@ -376,7 +376,7 @@ generate_env_files() {
|
|||||||
keycloak)
|
keycloak)
|
||||||
echo "CYPRESS_keycloakBaseUrl=http://localhost:8484" >>.env.cypress
|
echo "CYPRESS_keycloakBaseUrl=http://localhost:8484" >>.env.cypress
|
||||||
;;
|
;;
|
||||||
elasticsearch|opensearch)
|
elasticsearch | opensearch)
|
||||||
echo "CYPRESS_elasticsearchConnectionURL=http://localhost:9200" >>.env.cypress
|
echo "CYPRESS_elasticsearchConnectionURL=http://localhost:9200" >>.env.cypress
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -385,8 +385,8 @@ generate_env_files() {
|
|||||||
case "$SERVER" in
|
case "$SERVER" in
|
||||||
cloud)
|
cloud)
|
||||||
echo "CYPRESS_serverEdition=Cloud" >>.env.cypress
|
echo "CYPRESS_serverEdition=Cloud" >>.env.cypress
|
||||||
echo "CYPRESS_cwsURL=${CWS_URL}" >> .env.cypress
|
echo "CYPRESS_cwsURL=${CWS_URL}" >>.env.cypress
|
||||||
echo "CYPRESS_cwsAPIURL=${CWS_URL}" >> .env.cypress
|
echo "CYPRESS_cwsAPIURL=${CWS_URL}" >>.env.cypress
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "CYPRESS_serverEdition=E20" >>.env.cypress
|
echo "CYPRESS_serverEdition=E20" >>.env.cypress
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ for SETTING in \
|
|||||||
TeamSettings.EnableOpenServer=true \
|
TeamSettings.EnableOpenServer=true \
|
||||||
PluginSettings.Enable=true \
|
PluginSettings.Enable=true \
|
||||||
PluginSettings.EnableUploads=true \
|
PluginSettings.EnableUploads=true \
|
||||||
PluginSettings.AutomaticPrepackagedPlugins=true
|
PluginSettings.AutomaticPrepackagedPlugins=true; do
|
||||||
do
|
|
||||||
mme2e_log "Configuring parameter: $SETTING"
|
mme2e_log "Configuring parameter: $SETTING"
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
${MME2E_DC_SERVER} exec -T -- server mmctl --local config set $(tr '=' ' ' <<<$SETTING)
|
${MME2E_DC_SERVER} exec -T -- server mmctl --local config set $(tr '=' ' ' <<<$SETTING)
|
||||||
@@ -34,8 +33,7 @@ if [ "$TEST" = "cypress" ]; then
|
|||||||
for PLUGIN_URL in \
|
for PLUGIN_URL in \
|
||||||
"https://github.com/mattermost/mattermost-plugin-gitlab/releases/download/v1.3.0/com.github.manland.mattermost-plugin-gitlab-1.3.0.tar.gz" \
|
"https://github.com/mattermost/mattermost-plugin-gitlab/releases/download/v1.3.0/com.github.manland.mattermost-plugin-gitlab-1.3.0.tar.gz" \
|
||||||
"https://github.com/mattermost/mattermost-plugin-demo/releases/download/v0.9.0/com.mattermost.demo-plugin-0.9.0.tar.gz" \
|
"https://github.com/mattermost/mattermost-plugin-demo/releases/download/v0.9.0/com.mattermost.demo-plugin-0.9.0.tar.gz" \
|
||||||
"https://github.com/mattermost/mattermost-plugin-demo/releases/download/v0.8.0/com.mattermost.demo-plugin-0.8.0.tar.gz"
|
"https://github.com/mattermost/mattermost-plugin-demo/releases/download/v0.8.0/com.mattermost.demo-plugin-0.8.0.tar.gz"; do
|
||||||
do
|
|
||||||
PLUGIN_NAME="${PLUGIN_URL##*/}"
|
PLUGIN_NAME="${PLUGIN_URL##*/}"
|
||||||
PLUGIN_PATH="tests/fixtures/$PLUGIN_NAME"
|
PLUGIN_PATH="tests/fixtures/$PLUGIN_NAME"
|
||||||
|
|
||||||
@@ -63,7 +61,7 @@ for SERVICE in $ENABLED_DOCKER_SERVICES; do
|
|||||||
fi
|
fi
|
||||||
mme2e_log "Configuring the $SERVICE container"
|
mme2e_log "Configuring the $SERVICE container"
|
||||||
${MME2E_DC_SERVER} exec -T openldap bash -c 'ldapadd -Y EXTERNAL -H ldapi:/// -w mostest || true' <../../server/tests/custom-schema-objectID.ldif
|
${MME2E_DC_SERVER} exec -T openldap bash -c 'ldapadd -Y EXTERNAL -H ldapi:/// -w mostest || true' <../../server/tests/custom-schema-objectID.ldif
|
||||||
${MME2E_DC_SERVER} exec -T -- openldap bash -c 'ldapadd -Y EXTERNAL -H ldapi:/// -w mostest || true' < ../../server/tests/custom-schema-cpa.ldif
|
${MME2E_DC_SERVER} exec -T -- openldap bash -c 'ldapadd -Y EXTERNAL -H ldapi:/// -w mostest || true' <../../server/tests/custom-schema-cpa.ldif
|
||||||
${MME2E_DC_SERVER} exec -T -- openldap bash -c 'ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest' <../../server/tests/test-data.ldif
|
${MME2E_DC_SERVER} exec -T -- openldap bash -c 'ldapadd -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest' <../../server/tests/test-data.ldif
|
||||||
;;
|
;;
|
||||||
minio)
|
minio)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Collect run results
|
# Collect run results
|
||||||
cat > ../cypress/results/summary.json <<EOF
|
cat >../cypress/results/summary.json <<EOF
|
||||||
{
|
{
|
||||||
"passed": $(find ../cypress/results/mochawesome-report/json/tests/ -name '*.json' | xargs -l jq -r '.stats.passes' | jq -s add),
|
"passed": $(find ../cypress/results/mochawesome-report/json/tests/ -name '*.json' | xargs -l jq -r '.stats.passes' | jq -s add),
|
||||||
"failed": $(find ../cypress/results/mochawesome-report/json/tests/ -name '*.json' | xargs -l jq -r '.stats.failures' | jq -s add),
|
"failed": $(find ../cypress/results/mochawesome-report/json/tests/ -name '*.json' | xargs -l jq -r '.stats.failures' | jq -s add),
|
||||||
@@ -51,4 +51,4 @@ cat > ../cypress/results/summary.json <<EOF
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Collect server logs
|
# Collect server logs
|
||||||
${MME2E_DC_SERVER} logs --no-log-prefix -- server > "../cypress/logs/${LOGFILE_SUFFIX}_mattermost.log" 2>&1
|
${MME2E_DC_SERVER} logs --no-log-prefix -- server >"../cypress/logs/${LOGFILE_SUFFIX}_mattermost.log" 2>&1
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ ${MME2E_DC_SERVER} exec -i -u "$MME2E_UID" -- playwright bash -c "cd e2e-tests/p
|
|||||||
# Collect run results
|
# Collect run results
|
||||||
# Documentation on the results.json file: https://playwright.dev/docs/api/class-testcase#test-case-expected-status
|
# Documentation on the results.json file: https://playwright.dev/docs/api/class-testcase#test-case-expected-status
|
||||||
|
|
||||||
jq -f /dev/stdin ../playwright/results/reporter/results.json > ../playwright/results/summary.json <<EOF
|
jq -f /dev/stdin ../playwright/results/reporter/results.json >../playwright/results/summary.json <<EOF
|
||||||
{
|
{
|
||||||
passed: .stats.expected,
|
passed: .stats.expected,
|
||||||
failed: .stats.unexpected,
|
failed: .stats.unexpected,
|
||||||
|
|||||||
@@ -11,6 +11,13 @@ mme2e_wait_image "$SERVER_IMAGE" 4 30
|
|||||||
mme2e_log "Starting E2E containers"
|
mme2e_log "Starting E2E containers"
|
||||||
${MME2E_DC_SERVER} create
|
${MME2E_DC_SERVER} create
|
||||||
${MME2E_DC_SERVER} up -d --remove-orphans
|
${MME2E_DC_SERVER} up -d --remove-orphans
|
||||||
|
|
||||||
|
# Postgres check
|
||||||
|
if ! mme2e_wait_command_success "${MME2E_DC_SERVER} exec -T -- postgres pg_isready -h localhost" "Waiting for postgres to accept connections" "30" "5"; then
|
||||||
|
mme2e_log "Postgres not accepting connections"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if ! mme2e_wait_service_healthy server 60 10; then
|
if ! mme2e_wait_service_healthy server 60 10; then
|
||||||
mme2e_log "Mattermost container not healthy, retry attempts exhausted. Giving up." >&2
|
mme2e_log "Mattermost container not healthy, retry attempts exhausted. Giving up." >&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -18,9 +25,21 @@ fi
|
|||||||
# shellcheck disable=SC2043
|
# shellcheck disable=SC2043
|
||||||
for MIGRATION in migration_advanced_permissions_phase_2; do
|
for MIGRATION in migration_advanced_permissions_phase_2; do
|
||||||
# Query explanation: if it doesn't find the migration in the table, there are 0 results and the command fails with a divide-by-zero error. Otherwise the command succeeds
|
# Query explanation: if it doesn't find the migration in the table, there are 0 results and the command fails with a divide-by-zero error. Otherwise the command succeeds
|
||||||
MIGRATION_CHECK_COMMAND="${MME2E_DC_SERVER} exec -T -- postgres psql -U mmuser mattermost_test -c \"select 1 / (select count(*) from Systems where name = '${MIGRATION}' and value = 'true');\""
|
MIGRATION_CHECK_COMMAND="${MME2E_DC_SERVER} exec -T postgres sh -c 'PGPASSWORD=mostest psql -U mmuser mattermost_test -c \"select 1 / (select count(*) from Systems where name = '\''${MIGRATION}'\'' and value = '\''true'\'');\"'"
|
||||||
if ! mme2e_wait_command_success "$MIGRATION_CHECK_COMMAND >/dev/null 2>&1" "Waiting for migration to be completed: ${MIGRATION}" "30" "10"; then
|
if ! mme2e_wait_command_success "$MIGRATION_CHECK_COMMAND" "Waiting for migration to be completed: ${MIGRATION}" "10" "10"; then
|
||||||
mme2e_log "Migration ${MIGRATION} not completed, retry attempts exhausted. Giving up." >&2
|
mme2e_log "Migration ${MIGRATION} not completed, retry attempts exhausted. Giving up." >&2
|
||||||
|
|
||||||
|
LOG_DIR="../${TEST}/logs"
|
||||||
|
mkdir -p "$LOG_DIR"
|
||||||
|
|
||||||
|
# Save server logs to a file
|
||||||
|
${MME2E_DC_SERVER} logs --no-log-prefix -- server >"$LOG_DIR/server.log"
|
||||||
|
mme2e_log "Server logs saved to server.log"
|
||||||
|
|
||||||
|
# Save postgres logs to a file
|
||||||
|
${MME2E_DC_SERVER} logs --no-log-prefix -- postgres >"$LOG_DIR/postgres.log"
|
||||||
|
mme2e_log "Postgres logs saved to postgres.log"
|
||||||
|
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
mme2e_log "${MIGRATION}: completed."
|
mme2e_log "${MIGRATION}: completed."
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user