З Protractor
Цей навчальний посібник призначений для людей, які використовують Protractor і хочуть перенести свій фреймворк на WebdriverIO. Він був ініційований після того, як команда Angular оголосила, що Protractor більше не буде підтримуватися. На WebdriverIO вплинуло багато рішень дизайну Protractor, що робить його, ймовірно, найближчим фреймворком для міграції. Команда WebdriverIO цінує роботу кожного окремого розробника Protractor і сподівається, що цей підручник зробить перехід на WebdriverIO легким і простим.
Хоча ми хотіли б мати повністю автоматизований процес для цього, реальність виглядає інакше. У кожного різна конфігурація, і Protractor використовується по-різному. Кожен крок слід розглядати як керівництво, а не як покрокову інструкцію. Якщо у вас виникли проблеми з міграцією, не соромтеся зв'язатися з нами.
Налаштування
API Protractor та WebdriverIO насправді дуже схожі до такої міри, що більшість команд може бути переписана автоматично за допомогою codemod.
Щоб встановити codemod, виконайте:
npm install jscodeshift @wdio/codemod
Стратегія
Існує багато стратегій міграції. Залежно від розміру вашої команди, кількості тестових файлів і терміновості міграції, ви можете спробувати перетворити всі тести відразу або файл за файлом. З огляду на те, що Protractor продовжуватиме підтримуватися до версії Angular 15 (кінець 2022 року), у вас ще є достатньо часу. Ви можете мати тести Protractor і WebdriverIO, які працюють одночасно, і почати писати нові тести в WebdriverIO. Виходячи з вашого бюджету часу, ви можете почати з міграції важливих тестових випадків і поступово переходити до тестів, які, можливо, навіть можна видалити.
Спочатку файл конфігурації
Після встановлення codemod ми можемо почати перетворення першого файлу. Спочатку погляньте на параметри конфігурації WebdriverIO. Файли конфігурації можуть стати дуже складними, і може мати сенс перенести лише основні частини та подивитися, як можна додати решту, коли мігруватимуться відповідні тести, які потребують певних опцій.
Для першої міграції ми лише трансформуємо файл конфігурації і запускаємо:
npx jscodeshift -t ./node_modules/@wdio/codemod/protractor ./conf.ts
Ваша конфігурація може мати іншу назву, однак принцип повинен бути однаковим: почніть міграцію з конфігурації.
Встановлення залежностей WebdriverIO
Наступним кроком є налаштування мінімальної конфігурації WebdriverIO, яку ми почнемо вибудовувати в процесі міграції з одного фреймворку на інший. Спочатку встановлюємо CLI WebdriverIO через:
npm install --save-dev @wdio/cli
Далі запускаємо майстер конфігурації:
npx wdio config
Це проведе вас через кілька запитань. Для цього сценарію міграції ви:
- обираєте стандартні варіанти
- ми рекомендуємо не генерувати приклади файлів автоматично
- обираєте іншу папку для файлів WebdriverIO
- і обираєте Mocha замість Jasmine.
Навіть якщо ви раніше використовували Protractor з Jasmine, Mocha пропонує кращі механізми повторних спроб. Вибір за вами!
Після невели кого опитування майстер встановить всі необхідні пакети і збереже їх у вашому package.json.
Міграція файлу конфігурації
Після того, як ми отримали трансформований conf.ts і новий wdio.conf.ts, настав час перенести конфігурацію з одного файлу в інший. Переконайтеся, що ви переносите лише код, який є необхідним для запуску всіх тестів. У нашому випадку ми переносимо функції hook і timeout фреймворку.
Тепер ми продовжимо працювати лише з нашим файлом wdio.conf.ts, і, отже, більше не потрібно вносити зміни до оригінальної конфігурації Protractor. Ми можемо повернути їх назад, щоб обидва фреймворки могли працювати паралельно, і ми могли переносити по одному файлу за раз.