Tổ Chức Bộ Kiểm Thử
Khi dự án phát triển, chắc chắn sẽ có nhiều kiểm thử tích hợp được thêm vào. Điều này làm tăng thời gian xây dựng và làm chậm năng suất.
Để ngăn chặn điều này, bạn nên chạy các bài kiểm thử của mình song song. WebdriverIO đã kiểm thử từng spec (hoặc tệp tính năng trong Cucumber) song song trong một phiên duy nhất. Nhìn chung, hãy cố gắng chỉ kiểm thử một tính năng duy nhất cho mỗi tệp spec. Cố gắng không có quá nhiều hoặc quá ít bài kiểm thử trong một tệp. (Tuy nhiên, không có quy tắc vàng nào ở đây.)
Khi các bài kiểm thử của bạn có nhiều tệp spec, bạn nên bắt đầu chạy các bài kiểm thử đồng thời. Để làm như vậy, điều chỉnh thuộc tính maxInstances trong tệp cấu hình của bạn. WebdriverIO cho phép bạn chạy các bài kiểm thử với mức độ đồng thời tối đa—nghĩa là bất kể bạn có bao nhiêu tệp và bài kiểm thử, tất cả đều có thể chạy song song. (Điều này vẫn phụ thuộc vào một số giới hạn nhất định, như CPU của máy tính của bạn, hạn chế đồng thời, v.v.)
Giả sử bạn có 3 khả năng khác nhau (Chrome, Firefox và Safari) và bạn đã đặt
maxInstancesthành1. Trình chạy thử nghiệm WDIO sẽ tạo ra 3 quy trình. Do đó, nếu bạn có 10 tệp spec và bạn đặtmaxInstancesthành10, tất cả các tệp spec sẽ được kiểm thử đồng thời và 30 quy trình sẽ được tạo ra.
Bạn có thể định nghĩa thuộc tính maxInstances toàn cục để thiết lập thuộc tính cho tất cả các trình duyệt.
Nếu bạn chạy lưới WebDriver của riêng mình, bạn có thể (ví dụ) có nhiều khả năng cho một trình duyệt này hơn trình duyệt khác. Trong trường hợp đó, bạn có thể giới hạn maxInstances trong đối tượng khả năng của bạn:
// wdio.conf.js
export const config = {
// ...
// set maxInstance for all browser
maxInstances: 10,
// ...
capabilities: [{
browserName: 'firefox'
}, {
// maxInstances can get overwritten per capability. So if you have an in-house WebDriver
// grid with only 5 firefox instance available you can make sure that not more than
// 5 instance gets started at a time.
browserName: 'chrome'
}],
// ...
}
Kế thừa từ tệp cấu hình chính
Nếu bạn chạy bộ kiểm thử của mình trong nhiều môi trường (ví dụ: phát triển và tích hợp), việc sử dụng nhiều tệp cấu hình có thể giúp quản lý mọi thứ dễ dàng hơn.
Tương tự như khái niệm đối tượng trang, điều đầu tiên bạn cần là một tệp cấu hình chính. Nó chứa tất cả các cấu hình bạn chia sẻ giữa các môi trường.
Sau đó tạo một tệp cấu hình khác cho mỗi môi trường, và bổ sung cấu hình chính với các cấu hình đặc trưng cho môi trường:
// wdio.dev.config.js
import { deepmerge } from 'deepmerge-ts'
import wdioConf from './wdio.conf.js'
// have main config file as default but overwrite environment specific information
export const config = deepmerge(wdioConf.config, {
capabilities: [
// more caps defined here
// ...
],
// run tests on sauce instead locally
user: process.env.SAUCE_USERNAME,
key: process.env.SAUCE_ACCESS_KEY,
services: ['sauce']
}, { clone: false })
// add an additional reporter
config.reporters.push('allure')