mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-13 00:40:53 +01:00
84 lines
4.3 KiB
TypeScript
84 lines
4.3 KiB
TypeScript
import { createTest, expect } from '@ngx-playwright/test';
|
|
import type { MockPlayer } from '../../src/app/mock/mock-player.js';
|
|
import { createClassXPathSelector } from '../helpers/selector.js';
|
|
|
|
import { ApplicationScreen } from '../screens/main-screen.js';
|
|
|
|
|
|
const test = createTest(ApplicationScreen);
|
|
|
|
test.describe('Group', () => {
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.waitForSelector('.app-root-controls', { state: 'attached' });
|
|
await page.press('body', 'F2');
|
|
await page.waitForSelector('.app-root-controls', { state: 'visible' });
|
|
|
|
// connect
|
|
await page.click(`//app-window${ createClassXPathSelector('app-root-menu') }/button[1]`);
|
|
await page.waitForSelector('//app-connect');
|
|
await page.locator('//app-connect/div[1]/input[1]').fill('test');
|
|
await page.locator('//app-connect/div[1]/input[2]').fill('test');
|
|
await page.click('//app-connect/div[1]/app-action-buttons[1]/button[1]');
|
|
await expect(page.locator(`//app-window${ createClassXPathSelector('app-root-menu') }/button[1]`)).toHaveText(/Disconnect/);
|
|
});
|
|
|
|
test('Invite & Kick', async ({ page }) => {
|
|
const player = await page.evaluate('skyrimtogether.addMockPlayer()') as MockPlayer;
|
|
|
|
// open player manager
|
|
await page.click(`//app-window${ createClassXPathSelector('app-root-menu') }/button[2]`);
|
|
await page.click(`//app-player-manager/div[1]/button[2]`);
|
|
|
|
// launch party
|
|
await expect(await page.locator('.player-list-table').count()).toBe(0);
|
|
await page.click(`//app-party-menu[1]/div[1]/button[1]`);
|
|
await expect(await page.locator('.player-list-table').count()).toBe(0);
|
|
await expect(page.locator(`//app-party-menu/div[1]/span[1]`)).toHaveText(/There is nobody in your party yet/);
|
|
|
|
// open playerlist and invite player
|
|
await page.click(`//app-player-manager/div[1]/button[1]`);
|
|
await page.click(`//div${ createClassXPathSelector('player-list') }/table[1]/tbody[1]/tr[1]/td[4]/button[1]`);
|
|
await expect(page.locator(`//div${ createClassXPathSelector('player-list') }/table[1]/tbody[1]/tr[1]/td[4]/button[1]`)).toBeDisabled();
|
|
|
|
// accept invite
|
|
await page.evaluate(`skyrimtogether.accteptMockPlayerInvite(${ player.id })`);
|
|
await expect(page.locator(`//div${ createClassXPathSelector('player-list') }/table[1]/tbody[1]/tr[1]/td[4]/button[1]`)).toBeDisabled();
|
|
|
|
// check member list
|
|
await page.click(`//app-player-manager/div[1]/button[2]`);
|
|
await expect(await page.locator(`//div${ createClassXPathSelector('member-list') }/table[1]/tbody[1]/tr`).count()).toBe(1);
|
|
await expect(page.locator(`//div${ createClassXPathSelector('member-list') }/table[1]/tbody[1]/tr[1]/td[1]`)).toHaveText(`${ player.level }`);
|
|
await expect(page.locator(`//div${ createClassXPathSelector('member-list') }/table[1]/tbody[1]/tr[1]/td[2]`)).toHaveText(player.name);
|
|
await expect(page.locator(`//div${ createClassXPathSelector('member-list') }/table[1]/tbody[1]/tr[1]/td[3]`)).toHaveText(player.cellName);
|
|
|
|
// kick member
|
|
await page.click(`//div${ createClassXPathSelector('member-list') }/table[1]/tbody[1]/tr[1]/td[4]/button[2]`);
|
|
await expect(await page.locator('.player-list-table').count()).toBe(0);
|
|
|
|
// check invite button
|
|
await page.click(`//app-player-manager/div[1]/button[1]`);
|
|
await expect(page.locator(`//div${ createClassXPathSelector('player-list') }/table[1]/tbody[1]/tr[1]/td[4]/button[1]`)).toBeEnabled();
|
|
});
|
|
|
|
test('Launch & Leave Party', async ({ page }) => {
|
|
// open player manager
|
|
await page.click(`//app-window${ createClassXPathSelector('app-root-menu') }/button[2]`);
|
|
await page.click(`//app-player-manager/div[1]/button[2]`);
|
|
|
|
// launch party
|
|
await expect(page.locator(`//app-party-menu/div[1]/button[1]`)).toHaveText(/Launch party/);
|
|
await page.click(`//app-party-menu/div[1]/button[1]`);
|
|
|
|
// leave party
|
|
await expect(page.locator(`//app-party-menu/button[1]`)).toHaveText(/Leave party/);
|
|
await page.click(`//app-party-menu/button[1]`);
|
|
|
|
// check if the launch button reappeared
|
|
await expect(page.locator(`//app-party-menu/div[1]/button[1]`)).toHaveText(/Launch party/);
|
|
|
|
// close the player manager
|
|
await page.click(`//app-player-manager/div${ createClassXPathSelector('actions') }[1]//button[1]`);
|
|
await page.waitForSelector('//app-player-manager', { state: 'detached' });
|
|
});
|
|
});
|