Tổng quan JavaScript
Mở rộng flow bằng JavaScript cho logic phức tạp và xử lý dữ liệu.
Cú pháp YAML xử lý phần lớn tương tác UI theo kiểu khai báo, nhưng một số kịch bản cần logic vượt ra ngoài các step tuyến tính. JavaScript cho phép chạy một engine script ngay từ flow, để bạn xử lý dữ liệu động, assertion phức tạp và gọi dịch vụ bên ngoài.
Vì sao dùng JavaScript trong flow?
- Xử lý dữ liệu động: tạo định danh duy nhất, định dạng ngày tháng, hoặc xử lý chuỗi cho các ô nhập liệu.
- Điều khiển flow phức tạp: triển khai logic mà YAML khó biểu diễn, như tính toán hoặc rẽ nhánh nhiều step.
- Kết nối bên ngoài: đồng bộ test UI với backend bằng cách gọi API để lấy dữ liệu test hoặc kiểm tra trạng thái.
- Assertion nâng cao: viết logic tùy chỉnh để kiểm tra các trạng thái UI cần tính toán hoặc phân tích.
Cách hoạt động
Script chạy trong một engine nhúng bên trong runner, không phải Node.js và cũng không phải trình duyệt. Chúng không truy cập trực tiếp DOM hay các thư viện Node.js như fs.
Thông tin: engine JavaScript
Astra Scout chạy flow bằng maestro-runner, dùng goja, một engine JavaScript viết bằng Go. Nó hỗ trợ ECMAScript 5.1 cùng phần lớn tính năng ES6 trở lên (let, const, arrow function, template literal, class). Bản thân Maestro dùng GraalJS (và option Rhino), nên các tính năng ngôn ngữ hiếm gặp có thể khác nhau giữa hai bên. Hãy thử script trong Astra Scout trước khi dựa vào một tính năng ít gặp.
Runner bổ sung một vài biến global vào engine:
| Global | Là gì |
|---|---|
output | Đối tượng dùng chung tồn tại suốt cả flow. Xem Quản lý dữ liệu và trạng thái. |
maestro | Thông tin về run: maestro.platform và maestro.copiedText. |
http | Một HTTP client nhỏ. Xem Gửi HTTP request. |
json() | Phân tích chuỗi JSON thành đối tượng. |
console | console.log, console.warn và console.error. |
require() | Nạp script khác dưới dạng module CommonJS, ví dụ require('./helpers.js'). Đường dẫn tương đối được tính từ thư mục của flow. import của ES không dùng được. |
Lưu ý: không có trong Astra Scout
Đối tượng faker của Maestro (DataFaker) không tồn tại trong maestro-runner. Xem Tạo dữ liệu giả lập để biết các lựa chọn thay thế.
Khám phá khả năng của JavaScript
- Chạy và debug JavaScript: ba cách chạy JavaScript, và cách ghi log từ script.
- Quản lý dữ liệu và trạng thái: đối tượng global
outputchia sẻ dữ liệu trong toàn bộ flow. - Gửi HTTP request: thực hiện request
GET,POST,PUTvàDELETEtrực tiếp từ script. - Tạo dữ liệu giả lập: tạo giá trị ngẫu nhiên cho test.
Các lệnh liên quan là runScript và evalScript.
