Bây giờ, chúng ta có một sự hiểu biết nhanh chóng về các
bài kiểm tra đầu cuối và vai trò của các
bài kiểm tra đầu cuối đóng trong chiến lược tổng thể để thử nghiệm các ứng dụng góc cạnh.
Ngoài ra, một giới thiệu ngắn gọn về thước đo.
Hãy tiến hành bài tập tiếp theo, nơi chúng tôi có thể sử dụng
thước đo và thiết kế các bài kiểm tra đầu cuối của chúng tôi.
Thật may mắn là CLI góc cạnh tự động thiết
lập mọi thứ mà chúng ta cần để tiến hành các bài kiểm tra đầu cuối,
như chúng ta sẽ thấy khi chúng ta tiến hành bài tập.
Vì vậy, nó là một vấn đề của việc thực hiện các thử nghiệm khác nhau và
sau đó thực hiện các thử nghiệm bằng cách sử dụng thước đo trong bài tập này.
Đi đến ứng dụng góc cạnh của chúng tôi trong Visual Studio,
nếu bạn nhìn vào gói tập tin JSON của chúng tôi,
bạn sẽ thấy rằng chúng tôi đã tìm thấy
CLI góc cạnh đã thiết lập tất cả mọi thứ mà chúng tôi cần để thực hiện các bài kiểm tra đầu cuối.
Vì vậy, khi bạn cuộn xuống,
bạn sẽ thấy rằng thước đo đã được cài đặt trên
máy tính của chúng tôi trong dự án góc cạnh.
Ngoài ra, chúng tôi nhận thấy rằng có một thư mục riêng biệt ở đây
được gọi là e2e chứa một vài tệp
đã được thiết lập để thực hiện kiểm tra đầu cuối.
Bây giờ, nếu bạn cần thực hiện các bài kiểm tra đầu cuối rộng rãi,
thì bạn nên tạo
một tập tin riêng biệt cho mỗi tập hợp các bài kiểm tra đầu cuối mà bạn muốn thực hiện.
Bây giờ, trong bài tập đặc biệt này,
tôi chỉ minh họa cho các bạn cách thực hiện các bài kiểm tra đầu cuối.
Vì vậy, tôi sẽ gắn bó với những gì đã được thiết lập bởi CLI góc cạnh.
Chúng tôi sẽ làm việc với các tập tin mà chúng tôi có sẵn ngay tại đó.
Vì vậy, chúng ta hãy nhìn nhanh vào hai tập tin này ở đây, app.e2e-spec.t,
và bạn sẽ thấy rằng một số mã đã được giàn giáo ra vào tập tin này bằng góc cạnh.
Ngoài ra, tập tin khác được gọi là app.po.t,
đây là không có gì ngoài một lớp JavaScript chuẩn
đã được thiết lập với một vài phương pháp ở đây.
Bây giờ, những gì chúng ta sẽ làm là thêm một vài phương pháp để
lớp JavaScript này và cũng cập nhật một số các phương pháp được đưa ra ở đây.
Chúng tôi sẽ thiết lập các bài kiểm tra của chúng tôi trong tập tin app.e2e-spec.t.
Vì vậy, để tiếp tục,
chúng ta hãy đi đến ứng dụng.
Po.Ts tập tin, và sau đó trong tập tin này, chúng ta hãy cập nhật này.
Vì vậy, ở đây, bạn thấy rằng chúng tôi có hai phương pháp đã được thiết lập ở đây đã.
Tôi sẽ cập nhật các phương pháp này để cho phép họ có một tham số ở đây.
Vì vậy, tôi sẽ nói, NavigateTo với một liên kết,
được cung cấp dưới dạng một chuỗi,
và sau đó tôi sẽ cập nhật trình duyệt này có được để
sử dụng liên kết đó là tham số cho phương pháp này.
Vậy, điều này có tác dụng gì?
Vì vậy, như bạn có thể thấy,
chúng tôi đang sử dụng cú pháp thước đo ở đây.
Vì vậy, điều này nói trở lại trình duyệt nhận được liên kết.
Vì vậy, cuộc gọi đặc biệt này để trình duyệt này get phương pháp sẽ cho phép
ứng dụng của chúng tôi để duyệt đến liên kết đặc biệt này được cung cấp như là một tham số ở đây.
Vì vậy, trước khi cập nhật này,
bạn thấy rằng liên kết được cung cấp ở đây là dấu gạch chéo,
có nghĩa là gốc của ứng dụng góc cạnh của chúng tôi.
Bây giờ, tôi đã cập nhật này để có một tham số ở đây.
Tương tự, phương pháp thứ hai mà bạn thấy được gọi là GetParagraphText.
Bây giờ, phương pháp này được sử dụng để có được nội dung bên trong của một phần tử HTML ở đây.
Vì vậy, đối với điều này, cũng,
tôi sẽ thiết lập một tham số gọi là selector,
đó là một bộ chọn CSS mà tôi sẽ cung cấp ở đây.
Vì vậy, bạn thấy rằng ở đây,
tôi sẽ thay đổi điều này để lấy bộ chọn làm tham số.
Bây giờ, từ kinh nghiệm trước đó với bài kiểm tra đơn vị,
bạn sẽ thấy những gì bởi and.css đại diện cho.
Đây là điều tương tự mà chúng tôi đang sử dụng ở đây cũng.
Điều này bằng phương pháp ở đây đang được sử dụng bây giờ được nhập từ thư viện thước đo ở đây.
Phương pháp phần tử cũng được nhập từ thư viện thước đo.
Vì vậy, phương pháp phần tử này cho phép bạn truy cập vào một phần tử HTML
bằng cách cung cấp lựa chọn đó cho phần tử HTML như một tham số ở đây.
Vì vậy, bạn có thể nói bằng css, byID,
và nhiều phương pháp khác như vậy có sẵn cho các lớp học ở đây.
Sau đó, phương pháp GetText,
được như chúng ta thấy văn bản bên trong có thể nhìn thấy của phần tử cụ thể này.
Vì vậy, đây là một cách
để truy xuất thông tin từ các phần tử HTML cụ thể trong cửa sổ trình duyệt của chúng tôi, và sau đó kiểm tra xem nếu nó phù hợp với một mô hình mà chúng tôi đang chỉ định ở đây.
Vì vậy, với bản cập nhật này cho app.po.t,
chúng ta hãy chuyển sang tệp app.e2e-spec.t.
Vì vậy, trong tập tin này,
bạn sẽ nhận thấy rằng chúng tôi đang sử dụng cú pháp Jasmine.
Vì vậy, ở đây, bạn thấy tôi sử dụng mô tả và sau đó nói cho trang Appage.
Vì vậy, ở đây, trang là nơi chúng tôi đang tạo ra lớp mới này được gọi là AppPage,
mà chúng tôi đã tuyên bố trong tập tin app.po.tsnhư là một lớp JavaScript ở đây.
Bây giờ, đây chỉ là một cách thuận tiện
để thiết lập tất cả mọi thứ ở một vị trí, và sau đó có thể sử dụng chúng trong mã thử nghiệm của tôi.
Vì vậy, ở đây, tôi tuyên bố trang để tham khảo AppPage này,
và do đó sẽ cho phép tôi truy cập vào
các phương pháp mà tôi đã xây dựng trong lớp đó ở đây.
Vì vậy, bài kiểm tra đầu tiên mà tôi sẽ làm là để điều hướng đến
thư mục gốc của ứng dụng góc cạnh của tôi
và sau đó kiểm tra để xem nếu có một mô hình cụ thể trong đó.
Bạn sẽ nhận thấy rằng trong trang chủ của tôi,
bạn sẽ có chuỗi
gọi là Ristorante Con Fusion
bên trong một phần tử H1 trong trang của tôi.
Vì vậy, những gì tôi sẽ làm là để điều hướng đến thư mục gốc của phần tử HTML của tôi.
Sau đó, trong đó, tôi sẽ đi tìm xung quanh cho
tuyến đường ứng dụng và sau đó tìm thẻ H1 bên trong tuyến đường ứng dụng.
Sau đó, điều này nên bằng chuỗi đặc biệt này ở đây.
Vì vậy, tôi chỉ sẽ sao chép
chuỗi Ristorante Con Fusion ở đó và sau đó cung cấp đó như là một tham số ở đây.
Vì vậy, tôi chỉ cập nhật các bài kiểm tra để kiểm tra
chính xác những gì chúng tôi có trong ứng dụng góc được cập nhật của chúng tôi.
Vì vậy, với thiết lập này,
bây giờ tôi sẽ thực hiện thử nghiệm đầu tiên của tôi về ứng dụng góc cạnh của tôi.
Vì vậy, chúng ta hãy lưu tất cả các thay đổi và sau đó quay trở lại thiết bị đầu cuối của chúng tôi.
Trong thiết bị đầu cuối, trong thư mục dự án của tôi,
tại dấu nhắc tôi sẽ gõ ng e2e.
Bạn sẽ nhận thấy rằng điều này sẽ bắt đầu một trình duyệt.
Trong trường hợp của tôi, nó sẽ bắt đầu một cửa sổ Chrome và sau đó thực hiện kiểm tra trong cửa sổ đó.
Vì vậy, chúng ta hãy thực hiện bài kiểm tra đầu tiên.
Bạn sẽ thấy rằng khi thử nghiệm chạy sau khi biên dịch ứng dụng góc cạnh của tôi,
khi thử nghiệm chạy,
sau đó nó sẽ đảm bảo rằng thử nghiệm là thành công.
Bạn thấy rằng ở phía sau,
trình duyệt của tôi được mở bởi ng e2e,
và sau đó thử nghiệm được thực hiện trong cửa sổ trình duyệt đó.
Nó nói rằng thử nghiệm đã được thực hiện thành công ở đây.
Vì vậy, bạn nhận thấy rằng ngay cả trong trường hợp này,
nó cần phải bắt đầu trình duyệt,
tải ứng dụng góc cạnh của tôi vào trình duyệt,
toàn bộ ứng dụng góc cạnh vào trình duyệt.
Sau đó, thực hiện bài kiểm tra ra ứng dụng góc cạnh của tôi.
Tại thời điểm này, hãy chắc chắn rằng máy chủ của bạn,
máy chủ JSON đang hoạt động và chạy,
nếu không, thử nghiệm của bạn sẽ thất bại,
bởi vì khi thử nghiệm đã được thực hiện,
nó sẽ cố gắng truy cập vào máy chủ JSON cũng.
Vì vậy, đó là điều mà bạn cần phải đảm bảo.
Tiếp tục các bài kiểm tra của chúng tôi.
Trong bước thứ hai,
chúng ta sẽ thêm vào một vài phương pháp khác vào ứng dụng này.
Lớp học ở đây. Vì vậy, tôi sẽ sử dụng một phương pháp mới
được gọi là GetLement và sau đó tham số của một bộ chọn.
Phương pháp này cho phép tôi truy cập vào phần tử,
được chọn bằng cách sử dụng cùng một bộ chọn CSS.
Vì vậy, tôi sẽ sao chép cái này.
Vì vậy, trong trường hợp này, thay vì chỉ nhận được văn bản,
nó sẽ thực sự trả về tham chiếu đến phần tử chính nó,
và sau đó bạn có thể thêm vào
các cách bổ sung để truy cập thông tin bên trong phần tử đó như chúng ta yêu cầu.
Trong trường hợp này, get-text chỉ được sử dụng để lấy văn bản cụ thể.
Chúng ta có thể sử dụng các phương pháp khác trên
phần tử này để lấy thêm thông tin từ các phần tử đó.
Vì vậy, đó là lý do tại sao tôi tạo ra phương pháp này ở đây.
Tương tự như vậy, tôi sẽ thực hiện một phương pháp khác gọi là get all element.
Bây giờ, điều này cũng sử dụng một tham số gọi là selector giống như trước đây.
Những gì phương pháp GetAll làm là chọn
tất cả các yếu tố và sau đó trả lại
cho cổ áo, do đó, ví dụ,
nếu trang của bạn chứa nhiều yếu tố h1 tham
chiếu đến tất cả chúng sẽ được trả lại cho cổ áo của tôi.
Vì vậy, rằng có, sau đó tôi có thể quyết định thực hiện
một cuộc gọi đến một trong những cụ thể trong danh sách này của các yếu tố.
Vì vậy, để làm điều này,
chúng tôi sẽ sử dụng cùng một trở lại nhưng ở đây,
thay vì nói phần tử chọn,
hãy để tôi chỉ sao chép mà và sau đó chúng tôi có một phương pháp gọi là
element.all cho phép chúng tôi
truy cập tất cả các yếu tố phù hợp với chọn cụ thể này.
Đầu tiên sẽ trả về phần tử đầu tiên phù hợp với bộ chọn đó.
Sau những cập nhật này, bây giờ chúng tôi sẽ chuyển sang tập tin thử nghiệm của chúng tôi và thêm vào một thử nghiệm mới ở đây.
Vì vậy, ở đây một lần nữa, tôi đang sử dụng cú pháp Jasmine để thêm vào thử nghiệm mới ở đây.
Vì vậy, tôi sẽ nói nó và sau đó đưa ra một mô tả cho bài kiểm tra này.
Sẽ nói Nó nên điều hướng đến về
chúng tôi trang bằng cách nhấp vào liên kết.
Bây giờ, nếu bạn nhìn lại ứng dụng Angular của bạn,
bạn sẽ nhận thấy rằng trong ứng dụng Angular
của bạn, bạn có các liên kết điều hướng ở đầu trang.
Vì vậy, những gì chúng ta sẽ làm trong bài kiểm tra này là tự động
truy cập và truy cập vào một trong những liên kết điều hướng và nhấp vào chúng.
Bây giờ, tất nhiên, như bạn mong đợi điều này sẽ được thực hiện theo lập trình,
chứ không phải bằng cách nhấp vào liên kết theo cách thủ công.
Vì vậy, để làm điều đó,
những gì tôi sẽ làm là để điều hướng đến thư mục gốc của ứng dụng Angular của tôi và sau đó,
tôi sẽ truy cập vào
các liên kết trong thanh điều hướng của tôi ở trên cùng.
Bằng cách nói trang, getAllElements và
sau đó tôi sẽ nhận được tất cả các yếu tố có một thẻ trong đó.
Bây giờ rõ ràng, bạn sẽ có rất nhiều trong số đó một thẻ trong trang của chúng tôi nhưng bốn đầu,
là bốn liên kết
trong thanh điều hướng ở đầu trang của chúng tôi có trong thành phần tiêu đề.
Vì vậy, nhận được quyền truy cập vào những
bây giờ lưu ý rằng tôi đang sử dụng get tất cả các yếu tố vì vậy tôi sẽ nhận được một số yếu tố.
Trong trường hợp cụ thể này,
nó chỉ ra là khoảng 16 thẻ khác nhau mà sẽ mặc trong trang đó ở đó.
Vì vậy, tôi sẽ đi và chọn.
Vì vậy, đây là nơi tôi sử dụng phương pháp này được gọi là get và sau đó tôi có thể chỉ định
một chỉ số cho các yếu tố cụ thể mà tôi muốn.
Vì vậy, tôi đã kiểm tra nếu bạn nhìn vào các thành phần tiêu đề tập tin mẫu,
bạn sẽ nhận thấy rằng thứ hai một thẻ
trong trang HTML của thành phần tiêu đề là đề cập đến liên kết về chúng tôi có.
Vì vậy, đó là những gì tôi nhận được quyền truy cập bằng cách nói nhận được một.
Zero, tất nhiên, đề cập đến liên kết nhà trong
thành phần tiêu đề, nơi chúng tôi đã tạo thanh công cụ của chúng tôi ở trên cùng ở đó.
Vì vậy, tôi có quyền truy cập vào thứ hai vì vậy đây là liên kết về ở đó.
Bây giờ, một khi bạn có được giữ của liên kết này,
có một phương pháp mà protractor hỗ trợ
trên một phần tử với một liên kết có được gọi là nhấp chuột.
Vì vậy, điều này, như bạn thấy lập trình,
gây ra một nhấp chuột vào yếu tố cụ thể trong cửa sổ trình duyệt của tôi ở đó.
Vì vậy, theo lập trình, chúng tôi đang thực hiện những gì bạn thường sẽ thực hiện
bằng tay bằng cách đi đến liên kết đó và nhấp vào nó bằng cách sử dụng chuột của bạn.
Bây giờ, một khi chúng ta nhấp vào liên kết, rõ ràng,
bạn sẽ điều hướng đến trang Giới thiệu.
Bây giờ, trong trang Giới thiệu,
nếu bạn xem mẫu của trang Giới thiệu,
bạn sẽ thấy rằng có một phần tử h3 chứa tên của trang đó.
Trong phần tử h3 đó,
bạn sẽ thấy một văn bản gọi là Giới thiệu về không gian chúng tôi ở đó.
Vì vậy, đó là những gì tôi sẽ kiểm tra bây giờ.
Lý do tôi sẽ kiểm tra đó là để đảm bảo rằng tôi đã thực sự điều hướng đến
trang Giới thiệu về chúng tôi bằng cách thực hiện các bước này trong ứng dụng Angular của tôi.
Vì vậy, đây là nơi tôi sẽ sử dụng mong đợi.
Chúng tôi đã thấy việc sử dụng mong đợi và mong đợi trang.
GetParagraphText và tôi sẽ nhận được văn bản đoạn từ
h3 và điều này tôi mong đợi toBe.
Chú ý việc sử dụng cú pháp Jasmine ở đây và điều này nên là Giới thiệu về chúng tôi.
Vì vậy, giới thiệu thử nghiệm thứ hai này vào tập tin thử nghiệm của chúng tôi ở đây, chúng ta
hãy lưu những thay đổi mà chúng tôi đã thực hiện và sau đó đi và thực hiện bài kiểm tra này.
Đi đến nhà ga.
Một lần nữa, hãy để tôi thực hiện bài kiểm tra bằng cách nói ng e2e
và bạn sẽ nhận thấy rằng điều này sẽ một lần nữa đi qua cùng một tập hợp các bước,
và sau đó thực hiện cả hai bài kiểm tra mà bây giờ tôi có trong tập tin kiểm tra.
Thật thú vị khi xem thử nghiệm được thực hiện trong trình duyệt.
Vì vậy, bạn thấy rằng chúng tôi đang ở trên Trang chủ,
bây giờ bạn điều hướng đến trang Giới thiệu và sau đó thành công.
Vì vậy, chúng tôi đã điều hướng thành công từ
Trang chủ đến trang Giới thiệu và sau đó chúng tôi đã xác minh rằng bạn đã
điều hướng đến trang Giới thiệu bằng cách thực hiện
kiểm tra cụ thể mà chúng tôi đã kiểm tra để đảm bảo rằng
Giới thiệu chúng tôi nằm trong một thẻ h3 bên trong trang Giới thiệu ở đó.
Vì vậy, đây là một bài kiểm tra đầu cuối mà chúng tôi có thể thực hiện,
và bạn thực sự thấy bài kiểm tra được thực hiện ngay trước
mắt bạn mà không cần sự can thiệp bằng tay của bạn.
Tôi hy vọng bạn đang thích thực hiện các bài kiểm tra đầu cuối này.
Hãy tham vọng hơn một chút.
Bây giờ, những gì chúng ta sẽ làm là điều hướng đến một món ăn cụ thể,
và sau đó cố gắng chèn một bình luận vào món ăn đó.
Bây giờ, đây là nơi tôi sẽ có sự giúp đỡ của Protractor hỗ trợ,
và bạn sẽ thấy tôi sử dụng một số phương pháp khác từ
Protractor để điều hướng đến trang món ăn,
chúng tôi sẽ điều hướng đến món ăn đầu tiên trong menu của chúng tôi bằng cách sử dụng
liên kết đến trang chi tiết món ăn với tham số đó món ăn đặc biệt,
ID của món ăn đặc biệt.
Sau đó, chúng tôi sẽ xác định các yếu tố đầu vào của biểu mẫu,
và sau đó chúng tôi sẽ tự động gõ thông tin vào
các yếu tố đầu vào đó và sau đó cố gắng gửi biểu mẫu và xem điều gì sẽ xảy ra.
Vì vậy, để thực hiện bài kiểm tra này, một lần nữa,
đi vào và sử dụng cú pháp Jasmine,
tôi sẽ giới thiệu một nó ở đây và sau đó tôi sẽ xác định những gì thử nghiệm này đang cố gắng để làm.
Tôi sẽ nói, “Nó sẽ nhập một bình luận mới cho
món ăn đầu tiên” và chức năng mũi tên
và bạn thấy rằng bên trong chức năng mũi tên này,
chúng tôi sẽ làm trang đầu tiên của chúng tôi NavigateTo,
chúng tôi sẽ điều hướng đến dishdetail zero.
Vì vậy, đây là món ăn đầu tiên trong thực đơn của chúng tôi.
Bây giờ, một khi chúng ta điều hướng đến trang dishdetail, chúng ta sẽ nói,
“hãy để NewAuthor bằng trang GetRement.”
Vì vậy, chúng ta sẽ tìm thấy rằng yếu tố đó là
đầu vào và gõ văn bản ở đây,
vì vậy điều này sẽ giúp tôi xác định rằng yếu tố đầu vào nơi tên tác giả được
gõ trong các hình thức mà chúng tôi đã tạo ra trong trang dishdetail của chúng tôi.
Nếu bạn tò mò,
đi và có một cái nhìn vào hình thức đó,
và sau đó bạn sẽ thấy rằng có thực sự là
yếu tố đầu vào trong đó trang dishdetail có.
Vì vậy, truy cập vào đó, tôi sẽ gõ tên tác giả
vào trường đầu vào đó.
Vì vậy, đây là nơi mà phương pháp SendKeys' được hỗ trợ trên phần tử của chúng tôi đến với
sự trợ giúp của chúng tôi, phương pháp SendKeys' được hỗ trợ bởi Protractor.
Vì vậy, ở đây, tôi sẽ gõ vào tên của tác giả như là tác giả thử nghiệm.
Vì vậy, ở phần cuối của hai bước này,
tác giả thử nghiệm nên được gõ vào các yếu tố đầu vào trong hình thức của tôi.
Bây giờ, ngoài ra, tôi cũng cần phải gõ vào bình luận cho biểu mẫu đó.
Chúng tôi cũng có thể thiết lập giá trị đánh giá,
nhưng tôi sẽ không làm điều đó trong bài kiểm tra đặc biệt này,
tôi chỉ cần gõ vào giá trị nhận xét bằng cách sử dụng một cách tiếp cận tương tự.
Vì vậy, tôi sẽ nói, “để NewComment”,
một lần nữa, sẽ nhận được trang,
GetRement, và sau đó đây là nơi tôi tìm kiếm
textarea và NewComment,
SendKeys và gõ vào “Test Comment”.
Vì vậy, điều này sẽ điền vào các từ Test Comment vào khu vực văn bản
có chứa các ý kiến mà
tác giả là phải nộp cho đó món ăn cụ thể.
Sau đó, chúng tôi sẽ tìm thấy SubmitButton.
Vì vậy, để làm điều đó, chúng ta sẽ nói
page.GetRement nút loại gửi,
và sau đó một khi chúng tôi nhận được giữ của nút chúng tôi chỉ cần nói, NewSubmitButton.Click.
Vì vậy, một khi chúng ta nhấp vào
nút, nhận xét sẽ gửi lại nó.
Bây giờ, tôi sẽ sử dụng một phương pháp khác mà Protractor hỗ trợ.
Tôi sẽ tạm dừng bài kiểm tra tại thời điểm đó.
Điều này sẽ cho phép tôi vượt qua các bài kiểm tra và sau đó thực hiện các bài kiểm tra hoặc các nhà máy,
vì vậy điều này nói, trình duyệt là không xác định,
vì vậy tôi cần phải đi trở lại đây và sau đó nhập
trình duyệt từ thư viện Protractor có,
và sau đó bạn thấy rằng các dòng squiggly màu đỏ đã biến mất,
vì vậy thử nghiệm của tôi nên tất cả được thiết lập chính xác ở đó.
Vì vậy, hãy để tôi lưu các thay đổi,
chúng tôi sẽ đi và thực hiện bài kiểm tra thứ ba này cũng,
cùng với hai bài kiểm tra còn lại mà chúng tôi đã nhập.
Đi đến trình duyệt, hãy để tôi thực hiện một lần nữa thử nghiệm đầu cuối,
khi trình duyệt mở ra, chúng tôi đi,
thử nghiệm đầu tiên đã được thực hiện và điều đó nên thành công,
thử nghiệm thứ hai đã được thực hiện và thử nghiệm thứ ba nơi chúng tôi điều hướng chi tiết món ăn,
và bạn thấy rằng bình luận thử nghiệm là gửi một cách chính xác bằng bài kiểm tra của chúng tôi.
Vì vậy, với điều này, chúng tôi hoàn thành bài tập này.
Trong bài tập này, bạn đã thực hiện ba bài kiểm tra khác nhau bằng cách sử dụng sự hỗ trợ từ
Protractor và thấy rằng ứng dụng của chúng tôi vượt qua tất cả ba bài kiểm tra đầu cuối này.
Đây là thời điểm tốt để bạn lưu các thay đổi vào
kho lưu trữ Git của bạn bằng cách sử dụng bài kiểm tra đầu cuối thông điệp.