forked from tradingview/lightweight-charts
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added new e2e tests for chart interactions such as mouse and touch interactions.
- Loading branch information
1 parent
3992003
commit 05ea046
Showing
19 changed files
with
831 additions
and
178 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#!/bin/bash | ||
set -e | ||
echo "Preparing" | ||
|
||
npm run build | ||
|
||
echo "Interactions tests" | ||
node ./tests/e2e/interactions/runner.js ./dist/lightweight-charts.standalone.development.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
import { BoundingBox, ElementHandle, Page } from 'puppeteer'; | ||
|
||
import { pageTimeout } from './page-timeout'; | ||
|
||
export async function doVerticalDrag( | ||
page: Page, | ||
element: ElementHandle | ||
): Promise<void> { | ||
const elBox = (await element.boundingBox()) as BoundingBox; | ||
|
||
const elMiddleX = elBox.x + elBox.width / 2; | ||
const elMiddleY = elBox.y + elBox.height / 2; | ||
|
||
// move mouse to the middle of element | ||
await page.mouse.move(elMiddleX, elMiddleY); | ||
|
||
await page.mouse.down({ button: 'left' }); | ||
await page.mouse.move(elMiddleX, elMiddleY - 20); | ||
await page.mouse.move(elMiddleX, elMiddleY + 40); | ||
await page.mouse.up({ button: 'left' }); | ||
} | ||
|
||
export async function doHorizontalDrag( | ||
page: Page, | ||
element: ElementHandle | ||
): Promise<void> { | ||
const elBox = (await element.boundingBox()) as BoundingBox; | ||
|
||
const elMiddleX = elBox.x + elBox.width / 2; | ||
const elMiddleY = elBox.y + elBox.height / 2; | ||
|
||
// move mouse to the middle of element | ||
await page.mouse.move(elMiddleX, elMiddleY); | ||
|
||
await page.mouse.down({ button: 'left' }); | ||
await page.mouse.move(elMiddleX - 20, elMiddleY); | ||
await page.mouse.move(elMiddleX + 40, elMiddleY); | ||
await page.mouse.up({ button: 'left' }); | ||
} | ||
|
||
export async function doKineticAnimation( | ||
page: Page, | ||
element: ElementHandle | ||
): Promise<void> { | ||
const elBox = (await element.boundingBox()) as BoundingBox; | ||
|
||
const elMiddleX = elBox.x + elBox.width / 2; | ||
const elMiddleY = elBox.y + elBox.height / 2; | ||
|
||
// move mouse to the middle of element | ||
await page.mouse.move(elMiddleX, elMiddleY); | ||
|
||
await page.mouse.down({ button: 'left' }); | ||
await pageTimeout(page, 50); | ||
await page.mouse.move(elMiddleX - 40, elMiddleY); | ||
await page.mouse.move(elMiddleX - 55, elMiddleY); | ||
await page.mouse.move(elMiddleX - 105, elMiddleY); | ||
await page.mouse.move(elMiddleX - 155, elMiddleY); | ||
await page.mouse.move(elMiddleX - 205, elMiddleY); | ||
await page.mouse.move(elMiddleX - 255, elMiddleY); | ||
await page.mouse.up({ button: 'left' }); | ||
|
||
await pageTimeout(page, 200); | ||
// stop animation | ||
await page.mouse.down({ button: 'left' }); | ||
await page.mouse.up({ button: 'left' }); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
import { ElementHandle, Page } from 'puppeteer'; | ||
|
||
export async function centerMouseOnElement( | ||
page: Page, | ||
element: ElementHandle | ||
): Promise<void> { | ||
const boundingBox = await element.boundingBox(); | ||
if (!boundingBox) { | ||
throw new Error('Unable to get boundingBox for element.'); | ||
} | ||
|
||
// move mouse to center of element | ||
await page.mouse.move( | ||
boundingBox.x + boundingBox.width / 2, | ||
boundingBox.y + boundingBox.height / 2 | ||
); | ||
} | ||
|
||
interface MouseScrollDelta { | ||
x?: number; | ||
y?: number; | ||
} | ||
|
||
export async function doMouseScroll( | ||
deltas: MouseScrollDelta, | ||
page: Page | ||
): Promise<void> { | ||
await page.mouse.wheel({ deltaX: deltas.x || 0, deltaY: deltas.y || 0 }); | ||
} | ||
|
||
export async function doMouseScrolls( | ||
page: Page, | ||
element: ElementHandle | ||
): Promise<void> { | ||
await centerMouseOnElement(page, element); | ||
|
||
await doMouseScroll({ x: 10.0 }, page); | ||
|
||
await doMouseScroll({ y: 10.0 }, page); | ||
|
||
await doMouseScroll({ x: -10.0 }, page); | ||
|
||
await doMouseScroll({ y: -10.0 }, page); | ||
|
||
await doMouseScroll({ x: 10.0, y: 10.0 }, page); | ||
|
||
await doMouseScroll({ x: -10.0, y: -10.0 }, page); | ||
} |
Oops, something went wrong.