mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-09 16:16:41 +08:00
test(router, router-outlet): migrate to generators (#27372)
Issue number: N/A --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> Router and router outlet tests are using legacy syntax ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Router and router outlet tests are using generator syntax ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. -->
This commit is contained in:
@ -1,100 +0,0 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { test } from '@utils/test/playwright';
|
||||
|
||||
test.describe('router: redirect', () => {
|
||||
test.beforeEach(({ skip }) => {
|
||||
skip.mode('md');
|
||||
skip.rtl();
|
||||
});
|
||||
|
||||
test('contains query parameters after redirect', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic#/redirect-to-three`);
|
||||
|
||||
expect(page.url()).toContain('#/three?has_query_string=true');
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('router: push', () => {
|
||||
test.beforeEach(({ skip }) => {
|
||||
skip.mode('md');
|
||||
skip.rtl();
|
||||
});
|
||||
|
||||
test('should support relative path', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic#/two/three/hola`);
|
||||
await page.click('#btn-rel');
|
||||
|
||||
expect(page.url()).toContain('#/two/three/relative?param=1');
|
||||
});
|
||||
|
||||
test('should support absolute path', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic#/two/three/hola`);
|
||||
await page.click('#btn-abs');
|
||||
|
||||
expect(page.url()).toContain('#/two/three/absolute');
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('router: tabs', () => {
|
||||
test.beforeEach(({ skip }) => {
|
||||
skip.mode('md');
|
||||
skip.rtl();
|
||||
});
|
||||
|
||||
test('should activate the initial tab', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic`);
|
||||
|
||||
const tabOne = page.locator('tab-one');
|
||||
|
||||
await expect(tabOne).toBeVisible();
|
||||
|
||||
expect(page.url()).toContain('/basic?');
|
||||
});
|
||||
|
||||
/**
|
||||
* Selects the Schedule (tab two) tab and verifies that both the
|
||||
* page is visible and the URL is correct.
|
||||
*/
|
||||
test('selecting a tab routes to the tab page', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic`);
|
||||
|
||||
const tabOne = page.locator('tab-one');
|
||||
const tabTwo = page.locator('tab-two');
|
||||
|
||||
await page.click('#tab-button-tab-two');
|
||||
|
||||
await expect(tabOne).toBeHidden();
|
||||
await expect(tabTwo).toBeVisible();
|
||||
|
||||
expect(page.url()).toContain('#/two');
|
||||
});
|
||||
|
||||
test('should navigate to a nested page within a tab', async ({ page }) => {
|
||||
await page.goto('/src/components/router/test/basic#/two');
|
||||
|
||||
const tabTwo = page.locator('tab-two');
|
||||
const pageOne = page.locator('page-one');
|
||||
|
||||
await expect(tabTwo).toBeVisible();
|
||||
await expect(pageOne).toBeVisible();
|
||||
|
||||
await page.click('text=Go to page 2');
|
||||
|
||||
const pageTwo = page.locator('page-two');
|
||||
|
||||
await expect(pageTwo).toBeVisible();
|
||||
await expect(pageOne).toBeHidden();
|
||||
|
||||
await expect(page.url()).toContain('#/two/second-page');
|
||||
});
|
||||
|
||||
test('navigating directly to a sub page should activate the page', async ({ page }) => {
|
||||
await page.goto('/src/components/router/test/basic#/two/second-page');
|
||||
|
||||
const tabTwo = page.locator('tab-two');
|
||||
const pageTwo = page.locator('page-two');
|
||||
|
||||
await expect(tabTwo).toBeVisible();
|
||||
await expect(pageTwo).toBeVisible();
|
||||
});
|
||||
});
|
||||
90
core/src/components/router/test/basic/router.e2e.ts
Normal file
90
core/src/components/router/test/basic/router.e2e.ts
Normal file
@ -0,0 +1,90 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { configs, test } from '@utils/test/playwright';
|
||||
|
||||
/**
|
||||
* This behavior does not vary across modes/directions.
|
||||
*/
|
||||
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
||||
test.describe(title('router: redirect'), () => {
|
||||
test('contains query parameters after redirect', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic#/redirect-to-three`, config);
|
||||
|
||||
expect(page.url()).toContain('#/three?has_query_string=true');
|
||||
});
|
||||
});
|
||||
|
||||
test.describe(title('router: push'), () => {
|
||||
test('should support relative path', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic#/two/three/hola`, config);
|
||||
await page.click('#btn-rel');
|
||||
|
||||
expect(page.url()).toContain('#/two/three/relative?param=1');
|
||||
});
|
||||
|
||||
test('should support absolute path', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic#/two/three/hola`, config);
|
||||
await page.click('#btn-abs');
|
||||
|
||||
expect(page.url()).toContain('#/two/three/absolute');
|
||||
});
|
||||
});
|
||||
|
||||
test.describe(title('router: tabs'), () => {
|
||||
test('should activate the initial tab', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic`, config);
|
||||
|
||||
const tabOne = page.locator('tab-one');
|
||||
|
||||
await expect(tabOne).toBeVisible();
|
||||
|
||||
expect(page.url()).toContain('/basic?');
|
||||
});
|
||||
|
||||
/**
|
||||
* Selects the Schedule (tab two) tab and verifies that both the
|
||||
* page is visible and the URL is correct.
|
||||
*/
|
||||
test('selecting a tab routes to the tab page', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/basic`, config);
|
||||
|
||||
const tabOne = page.locator('tab-one');
|
||||
const tabTwo = page.locator('tab-two');
|
||||
|
||||
await page.click('#tab-button-tab-two');
|
||||
|
||||
await expect(tabOne).toBeHidden();
|
||||
await expect(tabTwo).toBeVisible();
|
||||
|
||||
expect(page.url()).toContain('#/two');
|
||||
});
|
||||
|
||||
test('should navigate to a nested page within a tab', async ({ page }) => {
|
||||
await page.goto('/src/components/router/test/basic#/two', config);
|
||||
|
||||
const tabTwo = page.locator('tab-two');
|
||||
const pageOne = page.locator('page-one');
|
||||
|
||||
await expect(tabTwo).toBeVisible();
|
||||
await expect(pageOne).toBeVisible();
|
||||
|
||||
await page.click('text=Go to page 2');
|
||||
|
||||
const pageTwo = page.locator('page-two');
|
||||
|
||||
await expect(pageTwo).toBeVisible();
|
||||
await expect(pageOne).toBeHidden();
|
||||
|
||||
await expect(page.url()).toContain('#/two/second-page');
|
||||
});
|
||||
|
||||
test('navigating directly to a sub page should activate the page', async ({ page }) => {
|
||||
await page.goto('/src/components/router/test/basic#/two/second-page', config);
|
||||
|
||||
const tabTwo = page.locator('tab-two');
|
||||
const pageTwo = page.locator('page-two');
|
||||
|
||||
await expect(tabTwo).toBeVisible();
|
||||
await expect(pageTwo).toBeVisible();
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -1,90 +0,0 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { test } from '@utils/test/playwright';
|
||||
|
||||
import { setBeforeEnterHook, setBeforeLeaveHook } from '../test.utils';
|
||||
|
||||
test.describe('router: guards: href', () => {
|
||||
test.beforeEach(async ({ page, skip }) => {
|
||||
skip.mode('md');
|
||||
skip.rtl();
|
||||
|
||||
await page.goto(`/src/components/router/test/guards`);
|
||||
});
|
||||
|
||||
test('allow/allow', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'allow');
|
||||
|
||||
await page.click('#href');
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('block/allow', async ({ page }) => {
|
||||
// beforeEnter: block, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'block');
|
||||
|
||||
await page.click('#href');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('redirect/allow', async ({ page }) => {
|
||||
// beforeEnter: redirect, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'redirect');
|
||||
|
||||
await page.click('#href');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('allow/bock', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: block
|
||||
await setBeforeLeaveHook(page, 'block');
|
||||
|
||||
await page.click('#href');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
});
|
||||
|
||||
test('allow/redirect', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: redirect
|
||||
await setBeforeLeaveHook(page, 'redirect');
|
||||
|
||||
await page.click('#href');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
});
|
||||
});
|
||||
89
core/src/components/router/test/guards/href/router.e2e.ts
Normal file
89
core/src/components/router/test/guards/href/router.e2e.ts
Normal file
@ -0,0 +1,89 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { configs, test } from '@utils/test/playwright';
|
||||
|
||||
import { setBeforeEnterHook, setBeforeLeaveHook } from '../test.utils';
|
||||
|
||||
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
||||
test.describe(title('router: guards: href'), () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/guards`, config);
|
||||
});
|
||||
|
||||
test('allow/allow', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'allow');
|
||||
|
||||
await page.click('#href');
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('block/allow', async ({ page }) => {
|
||||
// beforeEnter: block, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'block');
|
||||
|
||||
await page.click('#href');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('redirect/allow', async ({ page }) => {
|
||||
// beforeEnter: redirect, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'redirect');
|
||||
|
||||
await page.click('#href');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('allow/bock', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: block
|
||||
await setBeforeLeaveHook(page, 'block');
|
||||
|
||||
await page.click('#href');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
});
|
||||
|
||||
test('allow/redirect', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: redirect
|
||||
await setBeforeLeaveHook(page, 'redirect');
|
||||
|
||||
await page.click('#href');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -1,92 +0,0 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { test } from '@utils/test/playwright';
|
||||
|
||||
import { setBeforeEnterHook, setBeforeLeaveHook } from '../test.utils';
|
||||
|
||||
test.describe('router: guards: router-link', () => {
|
||||
test.beforeEach(async ({ page, skip }) => {
|
||||
skip.mode('md');
|
||||
skip.rtl();
|
||||
|
||||
await page.goto(`/src/components/router/test/guards`);
|
||||
});
|
||||
|
||||
test('allow/allow', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'allow');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('block/allow', async ({ page }) => {
|
||||
// beforeEnter: block, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'block');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('redirect/allow', async ({ page }) => {
|
||||
// beforeEnter: redirect, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'redirect');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('allow/block', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: block
|
||||
await setBeforeLeaveHook(page, 'block');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
});
|
||||
|
||||
test('allow/redirect', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: redirect
|
||||
await setBeforeLeaveHook(page, 'redirect');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
});
|
||||
});
|
||||
91
core/src/components/router/test/guards/link/router.e2e.ts
Normal file
91
core/src/components/router/test/guards/link/router.e2e.ts
Normal file
@ -0,0 +1,91 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { configs, test } from '@utils/test/playwright';
|
||||
|
||||
import { setBeforeEnterHook, setBeforeLeaveHook } from '../test.utils';
|
||||
|
||||
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
||||
test.describe(title('router: guards: router-link'), () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/guards`, config);
|
||||
});
|
||||
|
||||
test('allow/allow', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'allow');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('block/allow', async ({ page }) => {
|
||||
// beforeEnter: block, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'block');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('redirect/allow', async ({ page }) => {
|
||||
// beforeEnter: redirect, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'redirect');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('allow/block', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: block
|
||||
await setBeforeLeaveHook(page, 'block');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
});
|
||||
|
||||
test('allow/redirect', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: redirect
|
||||
await setBeforeLeaveHook(page, 'redirect');
|
||||
|
||||
await page.click('#router-link');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -1,92 +0,0 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { test } from '@utils/test/playwright';
|
||||
|
||||
import { setBeforeEnterHook, setBeforeLeaveHook } from '../test.utils';
|
||||
|
||||
test.describe('router: guards: router.push', () => {
|
||||
test.beforeEach(async ({ page, skip }) => {
|
||||
skip.mode('md');
|
||||
skip.rtl();
|
||||
|
||||
await page.goto(`/src/components/router/test/guards`);
|
||||
});
|
||||
|
||||
test('allow/allow', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'allow');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('block/allow', async ({ page }) => {
|
||||
// beforeEnter: block, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'block');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('redirect/allow', async ({ page }) => {
|
||||
// beforeEnter: redirect, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'redirect');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('allow/block', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: block
|
||||
await setBeforeLeaveHook(page, 'block');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
});
|
||||
|
||||
test('allow/redirect', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: redirect
|
||||
await setBeforeLeaveHook(page, 'redirect');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
});
|
||||
});
|
||||
91
core/src/components/router/test/guards/push/router.e2e.ts
Normal file
91
core/src/components/router/test/guards/push/router.e2e.ts
Normal file
@ -0,0 +1,91 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { configs, test } from '@utils/test/playwright';
|
||||
|
||||
import { setBeforeEnterHook, setBeforeLeaveHook } from '../test.utils';
|
||||
|
||||
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
||||
test.describe(title('router: guards: router.push'), () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/guards`, config);
|
||||
});
|
||||
|
||||
test('allow/allow', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'allow');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('block/allow', async ({ page }) => {
|
||||
// beforeEnter: block, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'block');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('redirect/allow', async ({ page }) => {
|
||||
// beforeEnter: redirect, beforeLeave: allow
|
||||
await setBeforeEnterHook(page, 'redirect');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/home');
|
||||
});
|
||||
|
||||
test('allow/block', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: block
|
||||
await setBeforeLeaveHook(page, 'block');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
});
|
||||
|
||||
test('allow/redirect', async ({ page }) => {
|
||||
// beforeEnter: allow, beforeLeave: redirect
|
||||
await setBeforeLeaveHook(page, 'redirect');
|
||||
|
||||
await page.click('#router-push');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/child');
|
||||
|
||||
await page.click('ion-back-button');
|
||||
|
||||
await page.waitForChanges();
|
||||
|
||||
expect(page.url()).toContain('#/test');
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -1,15 +0,0 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { test } from '@utils/test/playwright';
|
||||
|
||||
test.describe('router: guards', () => {
|
||||
test.beforeEach(({ skip }) => {
|
||||
skip.mode('md');
|
||||
skip.rtl();
|
||||
});
|
||||
|
||||
test('guards should be run on initial load', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/guards#/guard-initial-page`);
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
});
|
||||
});
|
||||
12
core/src/components/router/test/guards/router.e2e.ts
Normal file
12
core/src/components/router/test/guards/router.e2e.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { configs, test } from '@utils/test/playwright';
|
||||
|
||||
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
||||
test.describe(title('router: guards'), () => {
|
||||
test('guards should be run on initial load', async ({ page }) => {
|
||||
await page.goto(`/src/components/router/test/guards#/guard-initial-page`, config);
|
||||
|
||||
expect(page.url()).toContain('#/child/1');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user