77 lines
3.1 KiB
Gherkin
77 lines
3.1 KiB
Gherkin
Feature: Device-local work reminders
|
|
@WJ-028 @service
|
|
Scenario: Remind only an opted-in smartphone
|
|
Given Alice enabled reminders on her smartphone but not her tablet
|
|
And it is Monday at 20:00 in the smartphone's last known timezone
|
|
And Alice has no work entry or day-off marker for that date
|
|
When the scheduler evaluates due reminders
|
|
Then one logical reminder is sent to the smartphone subscription
|
|
And none is sent to the tablet
|
|
|
|
@WJ-029 @service
|
|
Scenario Outline: Suppress an ineligible reminder
|
|
Given it is a weekday at 20:00 in the device's last known timezone
|
|
And <condition>
|
|
When the scheduler evaluates due reminders
|
|
Then no reminder is sent
|
|
Examples:
|
|
| condition |
|
|
| work is already recorded for that date |
|
|
| the date is marked as a day off |
|
|
| the work tracker is disabled |
|
|
| the account is disabled |
|
|
| the subscription is disabled |
|
|
|
|
@WJ-030 @service
|
|
Scenario: Catch up after maintenance
|
|
Given a reminder was due at 20:00 during maintenance
|
|
And it is now 21:00 on the same local date
|
|
And no work or day-off marker exists for that date
|
|
When the released application resumes scheduling
|
|
Then that reminder is sent
|
|
And another scheduler run does not create another logical reminder
|
|
|
|
@WJ-031 @service
|
|
Scenario: Do not catch up after the window closes
|
|
Given a reminder was missed during an outage
|
|
And it is after 22:00 in the device's last known timezone
|
|
When scheduling resumes
|
|
Then that missed reminder is discarded
|
|
|
|
@WJ-032 @service
|
|
Scenario: Use the last observed timezone while the app is closed
|
|
Given the smartphone last reported Europe/Berlin
|
|
And its owner travels without reopening the app
|
|
When the server schedules the reminder
|
|
Then it uses Europe/Berlin
|
|
When the app opens and reports a new valid timezone
|
|
Then subsequent scheduling uses the newly reported timezone
|
|
|
|
@WJ-033 @browser
|
|
Scenario: Open an old notification
|
|
Given a reminder refers to 2026-09-08
|
|
When Alice taps it on 2026-09-09
|
|
Then the work entry form opens for 2026-09-08
|
|
And the normal customer and project defaults apply
|
|
|
|
@WJ-034 @service
|
|
Scenario: Do not remind at weekends
|
|
Given an opted-in device has no recorded work or day-off marker today
|
|
And today is Saturday or Sunday in its last known timezone
|
|
When the scheduler evaluates reminders at 20:00
|
|
Then no reminder is sent
|
|
|
|
@WJ-035 @service
|
|
Scenario: Work recorded on another device suppresses a reminder
|
|
Given Alice's smartphone is opted in for reminders
|
|
And Alice records work on her desktop for the smartphone's current date
|
|
When the smartphone reminder becomes due
|
|
Then no reminder is sent
|
|
|
|
@WJ-060 @service
|
|
Scenario: Removing a day-off marker restores reminder eligibility
|
|
Given Alice's smartphone is opted in for reminders
|
|
And Alice marks the current date as a day off and then removes the marker
|
|
When the smartphone reminder becomes due
|
|
Then one logical reminder is sent to the smartphone subscription
|