diff --git a/test/helpers/widgets.ts b/test/helpers/widgets.ts index f46b8fd..8b96c3e 100644 --- a/test/helpers/widgets.ts +++ b/test/helpers/widgets.ts @@ -40,13 +40,13 @@ const WIDGETS: Record = { facts: { listItemId: 'WidgetListItem-facts', actionName: 'Bitcoin Facts', - homeId: () => (driver.isIOS ? 'FactsWidget' : undefined), + homeId: () => 'FactsWidget', hasSettings: () => false, }, weather: { listItemId: 'WidgetListItem-weather', actionName: 'Bitcoin Weather', - homeId: () => (driver.isIOS ? 'WeatherWidget' : undefined), + homeId: () => 'WeatherWidget', hasSettings: () => true, }, suggestions: { @@ -98,6 +98,24 @@ export async function scrollHomeToWidgets() { await sleep(500); } +/** Home widgets pager is available (scroll + edit control). When hidden, do not scroll. */ +export async function expectHomeWidgetsSection( + visible: boolean, + { timeout = 8_000 }: { timeout?: number } = {}, +) { + if (visible) { + await scrollHomeToWidgets(); + await elementById('WidgetsEdit').waitForDisplayed({ timeout, interval: 250 }); + return; + } + + await elementById('WidgetsEdit').waitForDisplayed({ + reverse: true, + timeout, + interval: 250, + }); +} + export async function openWidgetsFeed() { await scrollHomeToWidgets(); await tap('WidgetsAdd'); diff --git a/test/specs/widgets.e2e.ts b/test/specs/widgets.e2e.ts index 19d287d..fde00ae 100644 --- a/test/specs/widgets.e2e.ts +++ b/test/specs/widgets.e2e.ts @@ -14,6 +14,7 @@ import { addWidget, deleteAllDefaultWidgets, deleteWidget, + expectHomeWidgetsSection, expectWidgetPresent, expectWidgetSavedInEditList, openSavedWidgetPreview, @@ -60,8 +61,9 @@ describe('@widgets - Widgets', () => { await elementById('PriceWidgetRow-BTC/EUR').waitForDisplayed(); await openSavedWidgetPreview('price'); - await tap('WidgetEditReset'); await sleep(1000); + await tap('WidgetEditReset'); + await sleep(2000); await tap('WidgetEditPreview'); await elementById('WidgetSave').waitForDisplayed(); await sleep(1000); @@ -99,11 +101,9 @@ describe('@widgets - Widgets', () => { await tap('DialogConfirm'); await sleep(1000); - await scrollHomeToWidgets(); + await expectHomeWidgetsSection(true); await expectWidgetPresent('price'); - await expectWidgetPresent('weather'); await expectWidgetPresent('calculator'); - await expectWidgetPresent('blocks'); await openSettings(); await tap('WidgetsSettings'); @@ -111,11 +111,7 @@ describe('@widgets - Widgets', () => { await tap('NavigationBack'); await doNavigationClose(); - await scrollHomeToWidgets(); - await expectWidgetPresent('price', false, { timeout: 5000 }); - await expectWidgetPresent('weather', false, { timeout: 5000 }); - await expectWidgetPresent('calculator', false, { timeout: 5000 }); - await expectWidgetPresent('blocks', false, { timeout: 5000 }); + await expectHomeWidgetsSection(false, { timeout: 5_000 }); await openSettings(); await tap('WidgetsSettings'); @@ -123,10 +119,8 @@ describe('@widgets - Widgets', () => { await tap('NavigationBack'); await doNavigationClose(); - await scrollHomeToWidgets(); + await expectHomeWidgetsSection(true); await expectWidgetPresent('price'); - await expectWidgetPresent('weather'); await expectWidgetPresent('calculator'); - await expectWidgetPresent('blocks'); }); });