Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion client-v3/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ dist-electron/
junit/
coverage/
*.backup
components.d.ts
components.d.ts
public/docs
10 changes: 10 additions & 0 deletions client-v3/e2e/tests/08-show-config-cues.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,16 @@ test('can open the Go to Page dialog in cue editor', async () => {
await waitForModalClosed(page);
});

test('Go to Page submits and navigates to the requested page', async () => {
await page.click('button:has-text("Go to Page")');
await waitForModal(page, 'Go to Page');
await page.fill('.modal.show input[type="number"]', '1');
await confirmModal(page);
// If the fix is working, clicking OK closes the modal; previously Vuelidate prevented this
await waitForModalClosed(page);
await expect(page.locator('p.mb-0:has-text("Current Page: 1")')).toBeVisible();
});

// ── Cue Counts ────────────────────────────────────────────────────────────

test('switches to Cue Counts sub-tab', async () => {
Expand Down
49 changes: 49 additions & 0 deletions client-v3/e2e/tests/10-show-config-script.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,55 @@ test('edits the cue identifier', async () => {
});
});

test('can add a cue using Enter key in Add New Cue modal', async () => {
await page.locator('.add-cue-btn').first().click();
await waitForModal(page, 'Add New Cue');
await page.locator('.modal.show select#new-cue-type').selectOption({ index: 1 });
await page.fill('#new-cue-ident', '003');
// Enter key submits the form (fix: BForm @submit bound to onSubmitNew)
await page.locator('#new-cue-ident').press('Enter');
await waitForModalClosed(page);
await expect(page.locator('.cue-button:not(.add-cue-btn)')).toHaveCount(2, { timeout: 5_000 });
});

test('can edit a cue identifier using Enter key in Edit Cue modal', async () => {
// Click the second cue button (003)
await page.locator('.cue-button:not(.add-cue-btn)').last().click();
await waitForModal(page, 'Edit Cue');
await page.fill('#edit-cue-ident', '004');
// Enter key submits the form (fix: BForm @submit bound to onSubmitEdit)
await page.locator('#edit-cue-ident').press('Enter');
await waitForModalClosed(page);
await expect(page.locator('.cue-button:not(.add-cue-btn)')).toHaveCount(2, { timeout: 5_000 });
});

test('Jump to Cue navigates and auto-closes the modal', async () => {
await page.click('button:has-text("Go to Cue")');
await waitForModal(page, 'Jump to Cue');
await page.locator('.modal.show select').selectOption({ index: 1 }); // LX type
await page.locator('.modal.show input').fill('004');
await confirmModal(page); // Click Search
// Single exact match → navigateToMatch() now calls modal.hide() (fix)
await waitForModalClosed(page);
await expect(page.locator('.v-toast__text').filter({ hasText: /Jumped to/ })).toBeVisible({
timeout: 5_000,
});
});

test('deletes the Enter-key-added cue', async () => {
// Removes the LX 004 cue created in the Enter key test, leaving only LX 002
await page.locator('.cue-button:not(.add-cue-btn)').last().click();
await waitForModal(page, 'Edit Cue');
await page.locator('.modal.show button:has-text("Delete")').click();
await waitForModal(page, 'Delete Cue');
await page
.locator('.modal.show')
.filter({ has: page.locator('.modal-title:has-text("Delete Cue")') })
.locator('.modal-footer button.btn-danger')
.click();
await expect(page.locator('.cue-button:not(.add-cue-btn)')).toHaveCount(1, { timeout: 5_000 });
});

test('deletes the cue', async () => {
await page.locator('.cue-button:not(.add-cue-btn)').first().click();
await waitForModal(page, 'Edit Cue');
Expand Down
162 changes: 81 additions & 81 deletions client-v3/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading