import { expect, test } from '@playwright/experimental-ct-react';
import { CypherEditor } from '../CypherEditor';
test('prompt shows up', async ({ mount, page }) => {
const component = await mount();
await expect(component).toContainText('neo4j>');
await component.update();
await expect(component).toContainText('test>');
const textField = page.getByRole('textbox');
await textField.press('a');
await expect(textField).toHaveText('a');
});
test('line numbers can be turned on/off', async ({ mount }) => {
const component = await mount();
await expect(component).toContainText('1');
await component.update();
await expect(component).not.toContainText('1');
});
test('can configure readonly', async ({ mount, page }) => {
const component = await mount();
const textField = page.getByRole('textbox');
await textField.press('a');
await expect(textField).not.toHaveText('a');
await component.update();
await textField.press('b');
await expect(textField).toHaveText('b');
});
test('can set placeholder ', async ({ mount, page }) => {
const component = await mount();
const textField = page.getByRole('textbox');
await expect(textField).toHaveText('bulbasaur');
await component.update();
await expect(textField).not.toHaveText('bulbasaur');
await expect(textField).toHaveText('venusaur');
await textField.fill('abc');
await expect(textField).not.toHaveText('venusaur');
await expect(textField).toHaveText('abc');
});
test('can set/unset onFocus/onBlur', async ({ mount, page }) => {
const component = await mount();
let focusFireCount = 0;
let blurFireCount = 0;
const focus = () => {
focusFireCount += 1;
};
const blur = () => {
blurFireCount += 1;
};
await component.update();
const textField = page.getByRole('textbox');
await textField.click();
await expect(textField).toBeFocused();
// this is to give the events time to fire
await expect(() => {
expect(focusFireCount).toBe(1);
expect(blurFireCount).toBe(0);
}).toPass();
await textField.blur();
await expect(() => {
expect(focusFireCount).toBe(1);
expect(blurFireCount).toBe(1);
}).toPass();
await component.update();
await textField.click();
await expect(textField).toBeFocused();
await textField.blur();
await expect(() => {
expect(focusFireCount).toBe(1);
expect(blurFireCount).toBe(1);
}).toPass();
});
test('aria-label is not set by default', async ({ mount, page }) => {
await mount();
const textField = page.getByRole('textbox');
expect(await textField.getAttribute('aria-label')).toBeNull();
});
test('can set aria-label', async ({ mount, page }) => {
const ariaLabel = 'Cypher Editor';
await mount();
const textField = page.getByRole('textbox');
expect(await textField.getAttribute('aria-label')).toEqual(ariaLabel);
});