Так шо він придумав.
1) Створити сутність з необхідним текстом в одному із полів
2) Піти до неї, і скопіювати текст
3) Піти до необхідної сутності
4) Вставити текст в поля там
Я конєшно йому розповів чому так не треба робити.
1) Збільшення часу виконання тесту за рахунок
- створення/видалення сутності
- навігація між великими сторінками
2) Такий підхід важко відтворити для інших тестів, бо він досить складний
Він трохи подумав, і повернувся з трохи кращим рішенням
Ввести текст в той же сутності що він тестує, але в інше поле!!, а потім скопіювати звідти :):)
На шо я його запитав, а чого ти не введеш текст в теж поле в яке тобі потрібно його вставити (Paste), скопіюєш його звідти, видалиш, і потім зробиш Paste :)
- "А шо так можна було?!!" :):)
Я запропонував ще одне рішення яке можна перевикористовувати для ситуацій коли вам треба додати текст до буфера обміну в простий спосіб (наприклад перед початком тесту)
export async function addTextToClipboard(page: Page, textToCopy: string) {
await page.setContent(`<textarea>${textToCopy}</textarea>`);
await page.locator('//textarea').focus();
if (os.platform() === 'darwin') {
await page.keyboard.press('Meta+A');
await page.keyboard.press('Meta+C');
} else {
await page.keyboard.press('Control+A');
await page.keyboard.press('Control+C');
}
}Воно у відкриту сторінку вставить html елемент з потрібним кодом :) Ви його додаєте в буфер обміну і далі рухаєтесь по тесту :(мінус що треба потім сторінку перевантажити).
Висновки:
1) Тести повинні бути максимально короткі і не мати зайвих рухів якщо вони не потрібні
2) Уникайте створення додаткових сутностей
3) Шукайте прості рішення які можна перевикористати
Єдине що я не певен, що це найоптимальніший варіант вирішення цієї проблеми. Може ви поділитесь своїм досвідом з цим :)
