diff --git a/core/src/components/reorder-group/reorder-group.tsx b/core/src/components/reorder-group/reorder-group.tsx index cc91fb10ca..ac25871712 100644 --- a/core/src/components/reorder-group/reorder-group.tsx +++ b/core/src/components/reorder-group/reorder-group.tsx @@ -64,7 +64,7 @@ export class ReorderGroup implements ComponentInterface { } this.gesture = (await import('../../utils/gesture')).createGesture({ - el: this.doc.body, + el: this.el, queue: this.queue, gestureName: 'reorder', gesturePriority: 110, diff --git a/core/src/components/reorder-group/test/interactive/e2e.ts b/core/src/components/reorder-group/test/interactive/e2e.ts new file mode 100644 index 0000000000..dc437e62a6 --- /dev/null +++ b/core/src/components/reorder-group/test/interactive/e2e.ts @@ -0,0 +1,60 @@ +import * as pd from '@stencil/core/dist/testing/puppeteer/puppeteer-declarations'; +import { newE2EPage } from '@stencil/core/testing'; + +import { getElementProperty, queryDeep } from '../../../../utils/test/utils'; +import { moveReorderItem } from '../test.utils'; + +test('reorder: interactive', async () => { + const page = await newE2EPage({ + url: '/src/components/reorder-group/test/interactive?ionic:_testing=true' + }); + + const compares = []; + compares.push(await page.compareScreenshot('reorder: interactive before move')); + + const items = await page.$$('ion-reorder'); + const getItemId = await getElementProperty(items[0], 'id'); + expect(getItemId).toEqual('item-0'); + + await moveItem(getItemId, page, 'down', 1); + + const itemsAfterFirstMove = await page.$$('ion-reorder'); + expect(await getElementProperty(itemsAfterFirstMove[0], 'id')).toEqual('item-1'); + + await moveItem(getItemId, page, 'up', 1); + + const itemsAfterSecondMove = await page.$$('ion-reorder'); + expect(await getElementProperty(itemsAfterSecondMove[0], 'id')).toEqual('item-0'); + + compares.push(await page.compareScreenshot('reorder: interactive after move; before shadow move')); + + const shadowDomList = await queryDeep(page, 'test-reorder-list-shadow-dom', 'ion-list'); + + const itemsInShadowRoot = await shadowDomList.$$('ion-reorder'); + const getShadowItemId = await getElementProperty(itemsInShadowRoot[0], 'id'); + expect(getShadowItemId).toEqual('item-0'); + + await moveItem(getShadowItemId, page, 'down', 1, 'test-reorder-list-shadow-dom', 'ion-list'); + + const itemsInShadowRootAfterFirstMove = await shadowDomList.$$('ion-reorder'); + expect(await getElementProperty(itemsInShadowRootAfterFirstMove[0], 'id')).toEqual('item-1'); + + await moveItem(getShadowItemId, page, 'up', 1, 'test-reorder-list-shadow-dom', 'ion-list'); + + const itemsInShadowRootAfterSecondMove = await shadowDomList.$$('ion-reorder'); + expect(await getElementProperty(itemsInShadowRootAfterSecondMove[0], 'id')).toEqual('item-0'); + + compares.push(await page.compareScreenshot('reorder: interactive after shadow move')); + + for (const compare of compares) { + expect(compare).toMatchScreenshot(); + } +}); + +async function moveItem(id: string, page: pd.E2EPage, direction: 'up' | 'down' = 'up', numberOfSpaces = 1, ...parentSelectors: string[]) { + try { + await moveReorderItem(`#${id}`, page, direction, numberOfSpaces, ...parentSelectors); + } catch (err) { + throw err; + } +} diff --git a/core/src/components/reorder-group/test/interactive/index.html b/core/src/components/reorder-group/test/interactive/index.html new file mode 100644 index 0000000000..3aaae4e847 --- /dev/null +++ b/core/src/components/reorder-group/test/interactive/index.html @@ -0,0 +1,55 @@ + + + +
+ +