appId: com.edde746.plezy name: TV Back dismisses Next Episode without leaving playback tags: - e2e - regression - tv - playback --- - runFlow: ../subflows/onboard_jellyfin_tv.yaml # Reach Search by D-pad: taps switch to pointer mode and hide the TV rail label, # while percentage coordinates are not portable across TV sizes. - pressKey: "Remote Dpad Left" - extendedWaitUntil: visible: "Search" timeout: 15000 - repeat: times: 12 while: notVisible: text: "Search" focused: true commands: - pressKey: "Remote Dpad Down" - pressKey: "Remote Dpad Center" - extendedWaitUntil: visible: "Search movies, shows, music..." timeout: 10000 - tapOn: "Search movies, shows, music..." - inputText: "Maestro Show" - tapOn: point: "87%,90%" - extendedWaitUntil: visible: "(?s)^Maestro Show, TV show, (?:watched|unwatched)$" timeout: 15000 - tapOn: "(?s)^Maestro Show, TV show, (?:watched|unwatched)$" - waitForAnimationToEnd: timeout: 5000 - tapOn: "(?s)^Play S1E1$" # The player starts with chrome hidden (#1765); wait for its loading label # rather than using Pause as readiness. - extendedWaitUntil: notVisible: "(?s)^Play S1E1$" timeout: 30000 - extendedWaitUntil: notVisible: "Loading video" timeout: 30000 - pressKey: "Remote Media Fast Forward" - pressKey: "Remote Media Fast Forward" # Wait for Cancel, not Next Episode (the credits-skip action), before pressing Back. - extendedWaitUntil: visible: "(?s)^Cancel$" timeout: 20000 - runFlow: when: platform: iOS commands: - tapOn: "Cancel" - runFlow: when: platform: Android commands: - pressKey: "back" # Dismissal is animated, so give it a bounded wait rather than one instant look. - extendedWaitUntil: notVisible: "(?s)^Cancel$" timeout: 10000 - assertNotVisible: "Overview" - pressKey: "Remote Dpad Up" - extendedWaitUntil: visible: "(?s).*Maestro Episode 1.*" timeout: 10000