V2 e2e playwright (#343)

* test: create utility for uploading test-db

* chore: upgrade deps

* refactor: remove unused functions

* chore: create testing boilerplate

* test: upload showfile
This commit is contained in:
Carlos Valente
2023-04-18 23:16:19 +02:00
committed by GitHub
parent f248b78945
commit b228020b73
11 changed files with 378 additions and 42 deletions
+27
View File
@@ -0,0 +1,27 @@
import { test } from '@playwright/test';
test('test', async ({ page }) => {
await page.goto('http://localhost:4001/editor');
await page.getByRole('button', { name: 'Event...' }).click();
await page.getByRole('menuitem', { name: 'Delete all events' }).click();
await page.getByRole('button', { name: 'Upload showfile' }).click();
await page.getByLabel('Select file to upload').click();
await page.getByLabel('Select file to upload').setInputFiles('e2e/tests/fixtures/test-db.json');
await page.getByRole('button', { name: 'Upload' }).click();
await page.getByRole('button', { name: 'Close' }).click();
// asset test events
await page.getByPlaceholder('Start').first().click();
await page.getByText('First test event').click();
await page.getByTestId('delay-input').click();
await page
.locator('div')
.filter({ hasText: /^SED\+10minNew start: 10:10:00$/ })
.getByPlaceholder('Start')
.click();
await page.getByText('+10minNew start: 10:10:00').click();
await page.getByText('Second test event').click();
await page.getByText('Lunch').click();
await page.getByText('Third test event').click();
});
+183
View File
@@ -0,0 +1,183 @@
{
"rundown": [
{
"title": "First test event",
"subtitle": "",
"presenter": "",
"note": "",
"endAction": "continue",
"timerType": "count-down",
"timeStart": 32400000,
"timeEnd": 36000000,
"duration": 3600000,
"isPublic": true,
"skip": false,
"colour": "",
"user0": "",
"user1": "",
"user2": "",
"user3": "",
"user4": "",
"user5": "",
"user6": "",
"user7": "",
"user8": "",
"user9": "",
"type": "event",
"revision": 4,
"id": "aa42f"
},
{
"duration": 600000,
"type": "delay",
"revision": 0,
"id": "b1d5a"
},
{
"title": "Second test event",
"subtitle": "",
"presenter": "",
"note": "",
"endAction": "continue",
"timerType": "count-down",
"timeStart": 36000000,
"timeEnd": 39600000,
"duration": 3600000,
"isPublic": true,
"skip": false,
"colour": "",
"user0": "",
"user1": "",
"user2": "",
"user3": "",
"user4": "",
"user5": "",
"user6": "",
"user7": "",
"user8": "",
"user9": "",
"type": "event",
"revision": 2,
"id": "d71bc"
},
{
"title": "Lunch",
"type": "block",
"id": "91682"
},
{
"title": "Third test event",
"subtitle": "",
"presenter": "",
"note": "",
"endAction": "continue",
"timerType": "count-down",
"timeStart": 39600000,
"timeEnd": 720000,
"duration": 47520000,
"isPublic": true,
"skip": false,
"colour": "",
"user0": "",
"user1": "",
"user2": "",
"user3": "",
"user4": "",
"user5": "",
"user6": "",
"user7": "",
"user8": "",
"user9": "",
"type": "event",
"revision": 2,
"id": "da5b4"
}
],
"eventData": {
"title": "All about Carlos demo event",
"publicUrl": "www.getontime.no",
"publicInfo": "WiFi: demoproject \nPassword: ontimeproject",
"backstageUrl": "www.getontime.no",
"backstageInfo": "WiFi: demobackstage\nPassword: ontimeproject",
"endMessage": ""
},
"settings": {
"app": "ontime",
"version": 2,
"serverPort": 4001,
"lock": null,
"pinCode": "1234",
"timeFormat": "24"
},
"viewSettings": {
"overrideStyles": false
},
"aliases": [
{
"id": "0b0b3",
"enabled": true,
"alias": "test",
"pathAndParams": "lower?bg=ff2&text=f00&size=0.6&transition=5"
}
],
"userFields": {
"user0": "user0",
"user1": "user1",
"user2": "user2",
"user3": "user3",
"user4": "user4",
"user5": "user5",
"user6": "user6",
"user7": "user7",
"user8": "user8",
"user9": "user9"
},
"osc": {
"portIn": 8888,
"portOut": 9999,
"targetIP": "127.0.0.1",
"enabledIn": false,
"enabledOut": false,
"subscriptions": {
"onLoad": [],
"onStart": [],
"onPause": [],
"onStop": [],
"onUpdate": [],
"onFinish": []
}
},
"http": {
"http": {
"user": null,
"pwd": null,
"messages": {
"onLoad": {
"url": "",
"enabled": false
},
"onStart": {
"url": "",
"enabled": false
},
"onUpdate": {
"url": "",
"enabled": false
},
"onPause": {
"url": "",
"enabled": false
},
"onStop": {
"url": "",
"enabled": false
},
"onFinish": {
"url": "",
"enabled": false
}
},
"enabled": true
}
}
}
+25
View File
@@ -0,0 +1,25 @@
import fs from 'fs';
import path from 'path';
// haven't been able to get this to work
// it is well discussed in the issues, so should be able to find something
// https://playwrightsolutions.com/making-a-post/
// https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-fetch
// the upload is accepted by backend we receive 400 after upload and parse
export async function uploadTestDb(request) {
const filePath = path.resolve('e2e/tests/fixtures/test-db.json');
const file = fs.readFileSync(filePath);
const response = await request.post('http://localhost:4001/ontime/db?onlyRundown=false', {
multipart: {
file: {
fileName: filePath,
mimeType: "application/json",
buffer: file,
},
},
});
return response;
}
+4 -1
View File
@@ -1,3 +1,6 @@
{
"sourceType": "module"
"sourceType": "module",
"compilerOptions": {
"esModuleInterop": true
}
}