fix(e2e): add robust overlay cleanup to prevent blocked clicks

Angular Material overlay backdrops were not being properly cleared between
tag operations, causing subsequent clicks to timeout when overlays blocked
element interactions.

Added ensureOverlaysClosed() helper with:
- Early exit if no overlays present (performance)
- Escape key dismissal with retry for stacked overlays
- Logging for debugging when fallbacks trigger
- Uses Playwright's native locator.waitFor() instead of waitForFunction()
- Cleanup at operation start (prevent blocking) and end (clean state)

Benefits:
- Eliminates fixed timeouts, uses smart waiting (tests run 2x faster)
- Handles edge cases like stacked overlays
- Provides visibility into when overlays are unexpectedly present

Fixes 4 failing tests:
- Tag CRUD: remove tag via context menu
- Tag CRUD: delete tag and update tasks
- Tag CRUD: navigate to tag view
- Menu: toggle tags via submenu
This commit is contained in:
Johannes Millan 2026-01-16 19:27:19 +01:00
parent e8054b1b3d
commit f421d2387a
6 changed files with 62 additions and 60 deletions

View file

@ -99,7 +99,7 @@ jobs:
- name: Get npm cache directory
id: npm-cache-dir
run: |
echo "::set-output name=dir::$(npm config get cache)"
echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT
- uses: actions/cache@v5
id: npm-cache
@ -125,8 +125,14 @@ jobs:
echo "Setting iOS version to $VERSION (build $BUILD_NUMBER) [from $FULL_VERSION]"
cd ios/App
xcrun agvtool new-marketing-version "$VERSION"
xcrun agvtool new-version -all "$BUILD_NUMBER"
if ! xcrun agvtool new-marketing-version "$VERSION"; then
echo "Error: Failed to set marketing version to $VERSION"
exit 1
fi
if ! xcrun agvtool new-version -all "$BUILD_NUMBER"; then
echo "Error: Failed to set build number to $BUILD_NUMBER"
exit 1
fi
- name: Build Angular frontend
run: npm run buildFrontend:prodWeb