{"id":28989,"date":"2023-07-03T08:55:18","date_gmt":"2023-07-03T05:25:18","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/cypress-workshop-part-11-reporting-qase-github-actions-dbi\/"},"modified":"2023-07-03T08:55:18","modified_gmt":"2023-07-03T05:25:18","slug":"cypress-workshop-part-11-reporting-qase-github-actions-dbi","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/cypress-workshop-part-11-reporting-qase-github-actions-dbi\/","title":{"rendered":"\u06a9\u0627\u0631\u06af\u0627\u0647 \u0633\u0631\u0648 \u0642\u0633\u0645\u062a 11: \u06af\u0632\u0627\u0631\u0634 &#8211; \u0642\u0627\u0633\u060c \u0627\u0642\u062f\u0627\u0645\u0627\u062a Github"},"content":{"rendered":"<div data-article-id=\"1524084\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/cypress-workshop-part-11-reporting-qase-github-actions-dbi\/#%DB%8C%DA%A9_%D8%A2%D8%B4%D9%81%D8%AA%DA%AF%DB%8C\" >\u06cc\u06a9 \u0622\u0634\u0641\u062a\u06af\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/cypress-workshop-part-11-reporting-qase-github-actions-dbi\/#%D8%A7%D9%82%D8%AF%D8%A7%D9%85%D8%A7%D8%AA_Github\" >\u0627\u0642\u062f\u0627\u0645\u0627\u062a Github<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DB%8C%DA%A9_%D8%A2%D8%B4%D9%81%D8%AA%DA%AF%DB%8C\"><\/span>\n<p>  \u06cc\u06a9 \u0622\u0634\u0641\u062a\u06af\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Qase \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0633\u062a \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc \u062a\u0633\u062a\u060c \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u060c \u06af\u0632\u0627\u0631\u0634 \u06af\u06cc\u0631\u06cc \u0648 \u063a\u06cc\u0631\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0646\u062d\u0648\u0647 \u0627\u062a\u0635\u0627\u0644 \u062a\u0633\u062a \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 Cypress \u0648 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0646 \u0646\u062a\u0627\u06cc\u062c \u0628\u0647 Qase \u06cc\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u06af\u0631\u0641\u062a.  \u0627\u06cc\u0646 \u0628\u0647 \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u06af\u0632\u0627\u0631\u0634 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062f\u0633\u062a\u06cc \u0648 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p>\u0645\u0631\u0627\u062d\u0644:<\/p>\n<ul>\n<li>\u0628\u0647 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0642\u0627\u0633 \u0628\u0631\u0648\u06cc\u062f \u0648 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f: Qase\n<\/li>\n<li>\u067e\u0633 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u06af\u0627\u0647 Cypress &#8211; \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u06a9\u062a\u0627\u0628 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"298\" title=\"\"><\/p>\n<ul>\n<li>\u062f\u0631 \u062f\u0627\u062e\u0644 \u067e\u0631\u0648\u0698\u0647 \u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0622\u0646 \u0631\u0627 \u0648\u0628 \u0646\u0627\u0645\u06cc\u062f. <\/li>\n<li>\u062f\u0631 \u062f\u0627\u062e\u0644 \u0645\u062c\u0645\u0648\u0639\u0647 \u0648\u0628\u060c \u0647\u0645\u0647 \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u06a9\u062a\u0627\u0628 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u0633\u062a\u0646\u062f \u06a9\u0646\u06cc\u062f.  \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0627 \u062a\u0645\u0627\u0645 \u062c\u0632\u0626\u06cc\u0627\u062a \u0648 \u0645\u0631\u0627\u062d\u0644 \u067e\u0631 \u06a9\u0646\u06cc\u062f.  \u06cc\u06a9 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0636\u0627\u0641\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0645\u0627 \u0646\u06cc\u0633\u062a\u060c \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0647\u0646\u0648\u0632 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0633\u062a\u0646\u062f \u0634\u0648\u062f.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_473_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"456\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_870_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"484\" title=\"\"><\/p>\n<ul>\n<li>\u06cc\u06a9 \u0637\u0631\u062d \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0622\u0646 \u0631\u0627 \u0631\u06af\u0631\u0633\u06cc\u0648\u0646 \u0648\u0628 \u0646\u0627\u0645\u06cc\u062f.  \u062a\u0645\u0627\u0645 \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0645\u0627 \u0631\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_162_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"433\" title=\"\"><\/p>\n<ul>\n<li>\u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0631\u0648\u06cc\u062f \u0648 \u06cc\u06a9 \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u0645\u0648\u0627\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0632 \u0637\u0631\u062d \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0633\u062a.  \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_812_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"418\" title=\"\"><\/p>\n<ul>\n<li>\u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u0631\u0648\u0698\u0647 \u2190 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u0648\u06cc\u062f \u0648 \u0627\u06cc\u0646 \u062f\u0648 \u0646\u0642\u0637\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0641\u0634\u0627\u0631 \u0627\u0646\u0628\u0648\u0647 \u0646\u062a\u0627\u06cc\u062c \u0633\u0631\u0648 \u0641\u0631\u0627\u0647\u0645 \u0634\u0648\u062f<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_214_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"465\" title=\"\"><\/p>\n<ul>\n<li>\u0628\u0647 \u0635\u0641\u062d\u0647 api tokens \u0628\u0631\u0648\u06cc\u062f \u0648 \u06cc\u06a9 \u062a\u0648\u06a9\u0646 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.  \u0627\u0631\u0632\u0634 \u0631\u0645\u0632 \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0639\u062f\u0627\u064b \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_2_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"622\" height=\"1004\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_914_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"332\" title=\"\"><\/p>\n<ul>\n<li>\u0628\u0647 \u067e\u0631\u0648\u0698\u0647 cypress \u062e\u0648\u062f \u0628\u0631\u0648\u06cc\u062f \u0648 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0627\u06cc\u0646 3 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0631\u0627\u06cc Qase \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f: <\/li>\n<\/ul>\n<p><code>npm install cypress-qase-reporter<\/code><\/p>\n<p><code>npm  install dotenv<\/code><\/p>\n<p><code>npm install prompt<\/code><\/p>\n<ul>\n<li>\u062f\u0631 \u0632\u06cc\u0631 \u067e\u0648\u0634\u0647 \u0627\u0635\u0644\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0647\u0627\u06cc \u067e\u0648\u0634\u0647 \u062c\u062f\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>cypress-with-qase.js<\/code>\n<\/li>\n<li>\u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u0627 \u062d\u0631\u0648\u0641 \u0628\u0632\u0631\u06af\u060c \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f (\u062f\u0631 \u0647\u0631 \u0641\u0631\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 \u062e\u0627\u0635\u06cc \u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0648 \u0627\u062c\u0631\u0627 \u0631\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u067e\u0631\u0633\u062f \u06a9\u062f\u0627\u0645 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0631\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0648\u0644\u06cc\u0647 Cypress \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645)\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">dotenv<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">config<\/span><span class=\"p\">();<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">prompt<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">prompt<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">cypress<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">cypress<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nx\">prompt<\/span><span class=\"p\">.<\/span><span class=\"nx\">start<\/span><span class=\"p\">();<\/span>\n<span class=\"nx\">prompt<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">[<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">PROJECT_ID<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">description<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Provide Qase PROJECT_ID<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">string<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">required<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">RUN_ID<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">description<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Provide RUN_ID for the Qase test run<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">number<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">required<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">SUITE<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">description<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Provide SUITE folder path for the Qase test run<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">string<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">required<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">},<\/span>\n    <span class=\"p\">],<\/span>\n    <span class=\"kd\">function<\/span> <span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">,<\/span> <span class=\"nx\">result<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">cypress<\/span><span class=\"p\">.<\/span><span class=\"nx\">run<\/span><span class=\"p\">({<\/span>\n            <span class=\"na\">spec<\/span><span class=\"p\">:<\/span> <span class=\"s2\">`cypress\/e2e\/<\/span><span class=\"p\">${<\/span><span class=\"nx\">result<\/span><span class=\"p\">.<\/span><span class=\"nx\">SUITE<\/span><span class=\"p\">}<\/span><span class=\"s2\">\/*.cy.js`<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">browser<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">chrome<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">reporter<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cypress-qase-reporter<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">headed<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">reporterOptions<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n                <span class=\"na\">apiToken<\/span><span class=\"p\">:<\/span> <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">.<\/span><span class=\"nx\">QASE_API_KEY<\/span><span class=\"p\">,<\/span>\n                <span class=\"na\">projectCode<\/span><span class=\"p\">:<\/span> <span class=\"nx\">result<\/span><span class=\"p\">.<\/span><span class=\"nx\">PROJECT_ID<\/span><span class=\"p\">,<\/span>\n                <span class=\"na\">runId<\/span><span class=\"p\">:<\/span> <span class=\"nx\">result<\/span><span class=\"p\">.<\/span><span class=\"nx\">RUN_ID<\/span><span class=\"p\">,<\/span>\n                <span class=\"na\">logging<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n            <span class=\"p\">},<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u0628\u0647 \u0641\u0627\u06cc\u0644 package.json \u0628\u0631\u0648\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc Cypress \u0628\u0627 Qase \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f (\u062e\u0637 13):\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"cypress-workshop\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"version\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"1.0.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"main\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"index.js\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"scripts\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress-cli-prod\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"cypress open --env prod=1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress-headed-prod\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"cypress run --headed -b chrome --env prod=1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress-headless-prod\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"cypress run --headless -b chrome --env prod=1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress-cli-staging\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"cypress open\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress-headed-staging\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"cypress run --headed -b chrome\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress-headless-staging\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"cypress run --headless -b chrome\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress:run:qase\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"QASE_REPORT=1 node scripts\/cypress-with-qase.js\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"eslint cypress\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-fix\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"eslint cypress --fix\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">},<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"author\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"license\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"ISC\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"husky\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"hooks\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n      <\/span><span class=\"nl\">\"pre-commit\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"npm run eslint-fix\"<\/span><span class=\"w\">\n    <\/span><span class=\"p\">}<\/span><span class=\"w\">\n  <\/span><span class=\"p\">},<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"devDependencies\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^10.0.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^8.16.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-config-airbnb\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^19.0.4\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-config-prettier\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^8.5.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-plugin-chai-friendly\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^0.7.2\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-plugin-cypress\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^2.12.1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-plugin-import\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^2.26.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-plugin-jsx-a11y\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^6.5.1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-plugin-prettier\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^4.0.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"eslint-plugin-react\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^7.30.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"husky\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^8.0.1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"prettier\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^2.6.2\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">},<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"dependencies\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress-file-upload\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^5.0.8\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"cypress-qase-reporter\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^1.4.2-alpha.2\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"dotenv\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^16.0.1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"prompt\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^1.3.0\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 Qase \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\u06cc \u0647\u0631 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u0628\u06cc\u0627\u0628\u06cc\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0639\u062f\u062f \u062f\u0631 \u06a9\u0646\u0627\u0631 ID \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 CWBS \u06cc\u06a9 ID \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u062a \u0648 1 ID case \u0648 \u063a\u06cc\u0631\u0647):<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_768_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"391\" title=\"\"><\/p>\n<ul>\n<li>\u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f \u0648 \u06a9\u0644\u06cc\u062f API \u0631\u0627 \u0627\u0632 Qase \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u062f\u0647 \u0628\u0648\u062f\u06cc\u0645 \u0635\u0627\u062f\u0631 \u06a9\u0646\u06cc\u062f.  \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u0648 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0627\u0645\u0627 \u06a9\u0644\u06cc\u062f \u0634\u0645\u0627 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a\u060c \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u0645\u0631\u062d\u0644\u0647 8 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062c\u0627\u06cc\u200c\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f: <\/li>\n<\/ul>\n<p><code>export QASE_API_KEY=46b7d640b6841da28aea575cb6084141661976bcq<\/code><\/p>\n<ol>\n<li>\u0647\u0631 \u0645\u0648\u0631\u062f \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0634\u0646\u0627\u0633\u0647\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 Qase \u062f\u0631\u062c \u06a9\u0646\u062f\u060c \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u0633\u0646\u0627\u062f \u0631\u0627 \u0628\u0627 \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645: <\/li>\n<\/ol>\n<p>addBookToProfile.cy.js:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/\/ &lt;reference types=\"Cypress\" \/&gt;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">qase<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cypress-qase-reporter\/dist\/mocha<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">bookActions<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/book_store<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">navigateTo<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">describe<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Collections: Add Book To Collection<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Perform login<\/span>\n  <span class=\"nx\">beforeEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Perform login<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">createUser<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">generateToken<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"c1\">\/\/ Delete user<\/span>\n  <span class=\"nx\">afterEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Delete user<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">deleteUser<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">1<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check adding book to profile collection<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Navigate to book store<\/span>\n      <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">bookStore<\/span><span class=\"p\">();<\/span>\n      <span class=\"c1\">\/\/ Load books fixture<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">books<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">books<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Add first books to collection<\/span>\n        <span class=\"nx\">bookActions<\/span><span class=\"p\">.<\/span><span class=\"nx\">addBookToCollection<\/span><span class=\"p\">(<\/span><span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">Git<\/span><span class=\"p\">);<\/span>\n        <span class=\"c1\">\/\/ Handle alert and verify alert message<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">verifyWindowAlertText<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Book added to your collection.`<\/span><span class=\"p\">);<\/span>\n        <span class=\"c1\">\/\/ Navigate to user profile and verify that book is in collection table<\/span>\n        <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">profile<\/span><span class=\"p\">();<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tbody<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">find<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tr-group<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">first<\/span><span class=\"p\">().<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">Git<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>checkBookInfo.cy.js:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/\/ &lt;reference types=\"Cypress\" \/&gt;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">qase<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cypress-qase-reporter\/dist\/mocha<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">bookActions<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/book_store<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">profileActions<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/profile<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">navigateTo<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">describe<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Collections: Check Book Info<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Perform login<\/span>\n  <span class=\"nx\">beforeEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Perform login<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">createUser<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">generateToken<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"c1\">\/\/ Add book to book collection<\/span>\n  <span class=\"nx\">beforeEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Add book to profile collection<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">bookStore<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">books<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">books<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">bookActions<\/span><span class=\"p\">.<\/span><span class=\"nx\">addBookToCollection<\/span><span class=\"p\">(<\/span><span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">DesignPatternsJS<\/span><span class=\"p\">);<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">verifyWindowAlertText<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Book added to your collection.`<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">});<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"c1\">\/\/ Delete user<\/span>\n  <span class=\"nx\">afterEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Delete user<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">deleteUser<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">2<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check book info from profile table<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Navigate to user profile<\/span>\n      <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">profile<\/span><span class=\"p\">();<\/span>\n      <span class=\"c1\">\/\/ Load books fixture<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">books<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">books<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Click on book in collection to open book info<\/span>\n        <span class=\"nx\">profileActions<\/span><span class=\"p\">.<\/span><span class=\"nx\">checkBookData<\/span><span class=\"p\">(<\/span><span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">DesignPatternsJS<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n      <span class=\"c1\">\/\/ Define book info elements<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">bookDataElements<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">#ISBN-label<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">#title-label<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">#subtitle-label<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">#author-label<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">#publisher-label<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">#pages-label<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">#description-label<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">#website-label<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">];<\/span>\n      <span class=\"c1\">\/\/ Check book info elements<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">elementVisible<\/span><span class=\"p\">(<\/span><span class=\"nx\">bookDataElements<\/span><span class=\"p\">);<\/span>\n      <span class=\"c1\">\/\/ Define data about the book<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">bookData<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">9781449331818<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">Learning JavaScript Design Patterns<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s2\">`A JavaScript and jQuery Developer's Guide`<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">Addy Osmani<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s2\">`O'Reilly Media`<\/span><span class=\"p\">,<\/span>\n        <span class=\"dl\">'<\/span><span class=\"s1\">254<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n      <span class=\"p\">];<\/span>\n      <span class=\"c1\">\/\/ Check data about the book<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">textExists<\/span><span class=\"p\">(<\/span><span class=\"nx\">bookData<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>deleteBookFromProfile.cy.js:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/\/ &lt;reference types=\"Cypress\" \/&gt;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">qase<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cypress-qase-reporter\/dist\/mocha<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">bookActions<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/book_store<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">profileActions<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/profile<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">navigateTo<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">describe<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Collections: Delete Book From Collection<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Perform login<\/span>\n  <span class=\"nx\">beforeEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Perform login<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">createUser<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">generateToken<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"c1\">\/\/ Add book to collection<\/span>\n  <span class=\"nx\">beforeEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Add book to profile collection<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">bookStore<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">books<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">books<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">bookActions<\/span><span class=\"p\">.<\/span><span class=\"nx\">addBookToCollection<\/span><span class=\"p\">(<\/span><span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">SpeakingJS<\/span><span class=\"p\">);<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">verifyWindowAlertText<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Book added to your collection.`<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">});<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"c1\">\/\/ Delete user<\/span>\n  <span class=\"nx\">afterEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Delete user<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">deleteUser<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">3<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check deleting book from profile collection - confirm deletion<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">books<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">books<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Navigate to user profile<\/span>\n        <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">profile<\/span><span class=\"p\">();<\/span>\n        <span class=\"c1\">\/\/ Check if book is in the collection table<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tbody<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">find<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tr-group<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">first<\/span><span class=\"p\">()<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">SpeakingJS<\/span><span class=\"p\">);<\/span>\n        <span class=\"c1\">\/\/ Delete book from table - confirm deletion<\/span>\n        <span class=\"nx\">profileActions<\/span><span class=\"p\">.<\/span><span class=\"nx\">deleteBookFromTable<\/span><span class=\"p\">(<\/span><span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">SpeakingJS<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ok<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n        <span class=\"c1\">\/\/ Handle delete alert and verify message<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">verifyWindowAlertText<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Book deleted.`<\/span><span class=\"p\">);<\/span>\n        <span class=\"c1\">\/\/ Verify that book is no longer in collection table and that table is empty<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tbody<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">not.contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">SpeakingJS<\/span><span class=\"p\">);<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-noData<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">No rows found<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">be.visible<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">6<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check deleting book from profile collection - decline deletion<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">books<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">books<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Navigate to user profile<\/span>\n        <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">profile<\/span><span class=\"p\">();<\/span>\n        <span class=\"c1\">\/\/ Check if book is in the collection table<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tbody<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">find<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tr-group<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">first<\/span><span class=\"p\">()<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">SpeakingJS<\/span><span class=\"p\">);<\/span>\n        <span class=\"c1\">\/\/ Cancel book deletion<\/span>\n        <span class=\"nx\">profileActions<\/span><span class=\"p\">.<\/span><span class=\"nx\">deleteBookFromTable<\/span><span class=\"p\">(<\/span><span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">SpeakingJS<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cancel<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n        <span class=\"c1\">\/\/ Verify that book is still in the table<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tbody<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">SpeakingJS<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>login.cy.js:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/\/ &lt;reference types=\"Cypress\" \/&gt;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">qase<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cypress-qase-reporter\/dist\/mocha<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">auth<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/auth<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">navigateTo<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">describe<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Auth: Login user<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Navigate to login page<\/span>\n  <span class=\"nx\">beforeEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Navigate to Login page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">login<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">7<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check valid user credentials<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Load users fixture<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">users<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">users<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Perform login<\/span>\n        <span class=\"nx\">auth<\/span><span class=\"p\">.<\/span><span class=\"nx\">login<\/span><span class=\"p\">(<\/span><span class=\"nx\">users<\/span><span class=\"p\">.<\/span><span class=\"nx\">user2<\/span><span class=\"p\">.<\/span><span class=\"nx\">username<\/span><span class=\"p\">,<\/span> <span class=\"nx\">users<\/span><span class=\"p\">.<\/span><span class=\"nx\">user2<\/span><span class=\"p\">.<\/span><span class=\"nx\">password<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n      <span class=\"c1\">\/\/ Verify that user is redirected to profile page (user is logged in)<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">url<\/span><span class=\"p\">().<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Cypress<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">profile<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">8<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check invalid user credentials<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Perform login<\/span>\n      <span class=\"nx\">auth<\/span><span class=\"p\">.<\/span><span class=\"nx\">login<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">invalid345<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">invalid345<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n      <span class=\"c1\">\/\/ Verify that user is still on login page (user is not logged in)<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">url<\/span><span class=\"p\">().<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Cypress<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">login<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n      <span class=\"c1\">\/\/ Verify that error message is displayed<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">#output<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Invalid username or password!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">9<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check login with invalid username and valid password<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Load users fixture<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">users<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">users<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Perform login<\/span>\n        <span class=\"nx\">auth<\/span><span class=\"p\">.<\/span><span class=\"nx\">login<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">invalid345<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">users<\/span><span class=\"p\">.<\/span><span class=\"nx\">user2<\/span><span class=\"p\">.<\/span><span class=\"nx\">password<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n      <span class=\"c1\">\/\/ Verify that user is still on login page (user is not logged in)<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">url<\/span><span class=\"p\">().<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Cypress<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">login<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n      <span class=\"c1\">\/\/ Verify that error message is displayed<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">#output<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Invalid username or password!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">10<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check login with valid username and invalid password<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Load users fixture<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">users<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">users<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Perform login<\/span>\n        <span class=\"nx\">auth<\/span><span class=\"p\">.<\/span><span class=\"nx\">login<\/span><span class=\"p\">(<\/span><span class=\"nx\">users<\/span><span class=\"p\">.<\/span><span class=\"nx\">user2<\/span><span class=\"p\">.<\/span><span class=\"nx\">username<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">invalid345<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n      <span class=\"c1\">\/\/ Verify that user is still on login page (user is not logged in)<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">url<\/span><span class=\"p\">().<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Cypress<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">login<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n      <span class=\"c1\">\/\/ Verify that error message is displayed<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">#output<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Invalid username or password!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>logout.cy.js:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/\/ &lt;reference types=\"Cypress\" \/&gt;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">qase<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cypress-qase-reporter\/dist\/mocha<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">auth<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/auth<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">navigateTo<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">describe<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Auth: Log out user<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Perform login<\/span>\n  <span class=\"nx\">beforeEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Perform login<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">createUser<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">generateToken<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"c1\">\/\/ Delete user<\/span>\n  <span class=\"nx\">afterEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Delete user<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">deleteUser<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">11<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check logging out user<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Navigate to user profile<\/span>\n      <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">profile<\/span><span class=\"p\">();<\/span>\n      <span class=\"c1\">\/\/ Perform log out<\/span>\n      <span class=\"nx\">auth<\/span><span class=\"p\">.<\/span><span class=\"nx\">logout<\/span><span class=\"p\">();<\/span>\n      <span class=\"c1\">\/\/ Assert that user is on login page<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">url<\/span><span class=\"p\">().<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Cypress<\/span><span class=\"p\">.<\/span><span class=\"nx\">env<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">login<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>searchBookstore.cy.js:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/\/ &lt;reference types=\"Cypress\" \/&gt;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">qase<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cypress-qase-reporter\/dist\/mocha<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">bookActions<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/book_store<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">navigateTo<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/..\/support\/bookstore_page_objects\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">describe<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Bookstore: Search For Book<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Perform login<\/span>\n  <span class=\"nx\">beforeEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Perform login<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">createUser<\/span><span class=\"p\">();<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">generateToken<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"c1\">\/\/ Delete user<\/span>\n  <span class=\"nx\">afterEach<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Delete user<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">deleteUser<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">});<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">12<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check searching for existing book in book store<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Navigate to bookstore<\/span>\n      <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">bookStore<\/span><span class=\"p\">();<\/span>\n      <span class=\"c1\">\/\/ Load books fixture<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"nx\">fixture<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">books<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">then<\/span><span class=\"p\">((<\/span><span class=\"nx\">books<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Perform book search<\/span>\n        <span class=\"nx\">bookActions<\/span><span class=\"p\">.<\/span><span class=\"nx\">searchCollection<\/span><span class=\"p\">(<\/span><span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">DesignPatternsJS<\/span><span class=\"p\">);<\/span>\n        <span class=\"c1\">\/\/ Verify that there is a book in filtered table (in search result)<\/span>\n        <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tbody<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">find<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tr-group<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">first<\/span><span class=\"p\">()<\/span>\n          <span class=\"p\">.<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">books<\/span><span class=\"p\">.<\/span><span class=\"nx\">collection1<\/span><span class=\"p\">.<\/span><span class=\"nx\">DesignPatternsJS<\/span><span class=\"p\">);<\/span>\n      <span class=\"p\">});<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n\n  <span class=\"nx\">qase<\/span><span class=\"p\">(<\/span>\n    <span class=\"mi\">13<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">it<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Check searching for non-existing book in book store<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Define invalid book name<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">invalid_book_name<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Game of Thrones<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n      <span class=\"c1\">\/\/ Navigate to bookstore<\/span>\n      <span class=\"nx\">navigateTo<\/span><span class=\"p\">.<\/span><span class=\"nx\">bookStore<\/span><span class=\"p\">();<\/span>\n      <span class=\"c1\">\/\/ Perform book search<\/span>\n      <span class=\"nx\">bookActions<\/span><span class=\"p\">.<\/span><span class=\"nx\">searchCollection<\/span><span class=\"p\">(<\/span><span class=\"nx\">invalid_book_name<\/span><span class=\"p\">);<\/span>\n      <span class=\"c1\">\/\/ Assert that there are no search results (no book in the table and table is empty)<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-tbody<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">not.contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">invalid_book_name<\/span><span class=\"p\">);<\/span>\n      <span class=\"nx\">cy<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">.rt-noData<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">contain<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">No rows found<\/span><span class=\"dl\">'<\/span><span class=\"p\">).<\/span><span class=\"nx\">should<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">be.visible<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">})<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u06cc\u0627\u06cc\u06cc\u062f \u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645.  \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u062f\u0633\u062a\u0648\u0631 execute \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f <\/li>\n<\/ul>\n<p><code>npm run cypress:run:qase<\/code><\/p>\n<p>\u0648 \u0628\u0647 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f\u060c \u0634\u0646\u0627\u0633\u0647 \u067e\u0631\u0648\u0698\u0647\u060c \u0634\u0646\u0627\u0633\u0647 \u0627\u062c\u0631\u0627 \u0648 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0645\u062c\u0645\u0648\u0639\u0647 \u06a9\u062a\u0627\u0628\u0641\u0631\u0648\u0634\u06cc \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f. <\/p>\n<p>\u0648\u0642\u062a\u06cc \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062e\u0648\u062f \u0645\u06cc \u0631\u0648\u06cc\u062f\u060c \u0641\u0642\u0637 \u062f\u0631 URL \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u062e\u0631\u06cc\u0646 \u0634\u0645\u0627\u0631\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0634\u0646\u0627\u0633\u0647 \u0627\u062c\u0631\u0627 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f: <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_695_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"446\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361917_548_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"238\" title=\"\"><\/p>\n<ul>\n<li>\u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u062a\u0627\u06cc\u062c \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Qase \u0628\u0628\u06cc\u0646\u06cc\u062f\u060c \u0641\u0642\u0637 \u0635\u0641\u062d\u0647 \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u062f\u0631 Qase \u0628\u0627\u0632\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361918_751_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"478\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361918_845_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"256\" title=\"\"><\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f \u062a\u0645\u0627\u0645 \u0646\u062a\u0627\u06cc\u062c \u0622\u0632\u0645\u0627\u06cc\u0634\u0627\u062a \u0627\u0632 Cypress \u062f\u0631 Qase \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u0634\u0648\u062f.  \u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u062a\u0633\u062a \u062f\u0633\u062a\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062f\u0631 \u062e\u0648\u062f \u0642\u0627\u0633 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.  \u06a9\u0647 \u0645\u0627 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648 \u062f\u0633\u062a\u06cc \u0631\u0627 \u0628\u0627 \u0647\u0645 \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0631\u062f\u06cc\u0645. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361918_691_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"455\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361918_780_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"449\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%82%D8%AF%D8%A7%D9%85%D8%A7%D8%AA_Github\"><\/span>\n<p>  \u0627\u0642\u062f\u0627\u0645\u0627\u062a Github<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>GitHub Actions \u06cc\u06a9 \u067e\u0644\u062a\u0641\u0631\u0645 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0633\u0627\u0632\u06cc \u0648 \u062a\u062d\u0648\u06cc\u0644 \u0645\u062f\u0627\u0648\u0645 (CI\/CD) \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062e\u0637 \u0644\u0648\u0644\u0647 \u0633\u0627\u062e\u062a\u060c \u0622\u0632\u0645\u0627\u06cc\u0634 \u0648 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0646\u06cc\u062f.  \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06af\u0631\u062f\u0634\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0634\u0634\u06cc \u0631\u0627 \u062f\u0631 \u0645\u062e\u0632\u0646 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u062f\u060c \u06cc\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u06a9\u0634\u0634 \u0627\u062f\u063a\u0627\u0645\u200c\u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u062a\u0648\u0644\u06cc\u062f \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>GitHub Actions \u0641\u0631\u0627\u062a\u0631 \u0627\u0632 DevOps \u0627\u0633\u062a \u0648 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u0645\u062e\u0632\u0646 \u0634\u0645\u0627 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f\u060c \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.  \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0634\u062e\u0635\u06cc \u0645\u0634\u06a9\u0644 \u062c\u062f\u06cc\u062f\u06cc \u062f\u0631 \u0645\u062e\u0632\u0646 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u060c \u0628\u0631\u0686\u0633\u0628\u200c\u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>GitHub \u0645\u0627\u0634\u06cc\u0646\u200c\u0647\u0627\u06cc \u0645\u062c\u0627\u0632\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\u060c \u0648\u06cc\u0646\u062f\u0648\u0632 \u0648 macOS \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06af\u0631\u062f\u0634\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0634\u0645\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0645\u0631\u06a9\u0632 \u062f\u0627\u062f\u0647 \u06cc\u0627 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646 \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u2139\ufe0f \u062f\u0631\u0628\u0627\u0631\u0647 Github Actions \u0628\u06cc\u0634\u062a\u0631 \u0628\u062f\u0627\u0646\u06cc\u062f: Github Actions<\/p>\n<p>\u2139\ufe0f Github Actions + Cypress: GA \u0648 Cypress<\/p>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u0637\u0648\u0637 \u0644\u0648\u0644\u0647 CI\/CD \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0646\u06cc\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0633\u062e\u0647 \u06cc \u0646\u0645\u0627\u06cc\u0634\u06cc \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0627\u0642\u062f\u0627\u0645\u0627\u062a github \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0686\u0646\u062f \u0639\u0645\u0644 \u0633\u0627\u062f\u0647 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645: <\/p>\n<ul>\n<li>\u0628\u0631\u0646\u0627\u0645\u0647 cron job \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a \u0633\u0631\u0648 \u062f\u0631 \u0633\u0627\u0639\u062a 10 \u0635\u0628\u062d UTC \u0647\u0631 \u06cc\u06a9\u0634\u0646\u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u06cc\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u062a\u0633\u062a \u0647\u0627\u06cc \u0633\u0631\u0648 \u0631\u0627 \u062f\u0631 \u0647\u0631 \u0641\u0634\u0627\u0631 \u0628\u0647 \u0634\u0627\u062e\u0647 \u0627\u0635\u0644\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/li>\n<\/ul>\n<p>\u06a9\u0627\u0631 \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0633\u0631\u0648 \u0634\u0627\u0645\u0644 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a: <\/p>\n<ul>\n<li>\u062a\u0639\u0631\u06cc\u0641 \u0638\u0631\u0641 \u0648 \u0645\u0627\u0634\u06cc\u0646\u06cc \u06a9\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f<\/li>\n<li>\u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627<\/li>\n<li>\u0627\u062c\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0628\u062f\u0648\u0646 \u0633\u0631 \u062f\u0631 Chrom<\/li>\n<\/ul>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u061f <\/p>\n<ul>\n<li>\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062c\u062f\u06cc\u062f .github \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0627\u0635\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. <\/li>\n<li>\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062c\u062f\u06cc\u062f \u062f\u0631 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0631\u060c \u062a\u062d\u062a github. \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <\/li>\n<li>\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f main.yml \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <\/li>\n<\/ul>\n<p>\u0645\u062d\u062a\u0648\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f (\u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u06a9\u067e\u06cc \u067e\u06cc\u0633\u062a \u0634\u0648\u062f \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0641\u0627\u0635\u0644\u0647 \u0647\u0627 \u0648 \u063a\u06cc\u0631\u0647 \u062d\u0633\u0627\u0633 \u0627\u0633\u062a):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code><span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Cypress Tests<\/span>\n\n<span class=\"na\">on<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">schedule<\/span><span class=\"pi\">:<\/span>\n  <span class=\"c1\">#schedule at 10:00 on Sunday<\/span>\n  <span class=\"pi\">-<\/span> <span class=\"na\">cron<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">0<\/span><span class=\"nv\"> <\/span><span class=\"s\">10<\/span><span class=\"nv\"> <\/span><span class=\"s\">*<\/span><span class=\"nv\"> <\/span><span class=\"s\">*<\/span><span class=\"nv\"> <\/span><span class=\"s\">sun'<\/span>\n  <span class=\"na\">push<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">branches<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"s\">main<\/span>\n<span class=\"na\">jobs<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">cypress-run<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">runs-on<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ubuntu-latest<\/span>\n    <span class=\"na\">container<\/span><span class=\"pi\">:<\/span> <span class=\"s\">cypress\/browsers:node12.18.3-chrome87-ff82<\/span>\n    <span class=\"na\">steps<\/span><span class=\"pi\">:<\/span>\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Checkout<\/span>\n        <span class=\"na\">uses<\/span><span class=\"pi\">:<\/span> <span class=\"s\">actions\/checkout@v2<\/span>\n\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Install dependencies<\/span>\n        <span class=\"na\">run<\/span><span class=\"pi\">:<\/span> <span class=\"s\">npm install<\/span>    \n\n      <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">Run<\/span><span class=\"nv\"> <\/span><span class=\"s\">all<\/span><span class=\"nv\"> <\/span><span class=\"s\">tests'<\/span>\n        <span class=\"na\">uses<\/span><span class=\"pi\">:<\/span> <span class=\"s\">cypress-io\/github-action@v4<\/span>\n        <span class=\"na\">with<\/span><span class=\"pi\">:<\/span>\n          <span class=\"c1\"># we have already installed all dependencies above<\/span>\n          <span class=\"na\">install<\/span><span class=\"pi\">:<\/span> <span class=\"no\">false<\/span>\n          <span class=\"na\">wait-on<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">https:\/\/demoqa.com'<\/span>\n          <span class=\"na\">wait-on-timeout<\/span><span class=\"pi\">:<\/span> <span class=\"m\">120<\/span>\n          <span class=\"na\">browser<\/span><span class=\"pi\">:<\/span> <span class=\"s\">chrome<\/span>\n          <span class=\"na\">spec<\/span><span class=\"pi\">:<\/span> <span class=\"s\">cypress\/e2e\/**\/*<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0647 \u0645\u062e\u0632\u0646 github \u0631\u0627\u0647 \u062f\u0648\u0631 \u062e\u0648\u062f \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f\u060c github \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u062f.  \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0645\u062e\u0632\u0646 \u0627\u0631\u0627\u0626\u0647 \u0633\u0631\u0648 \u0645\u0646 \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627\u06cc \u062f\u0631\u0633 \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0627\u0633\u062a \u0628\u0628\u06cc\u0646\u06cc\u062f: \u067e\u06cc\u0648\u0646\u062f<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361918_682_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"326\" title=\"\"><\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc github \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0632\u06cc\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f.  \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u062c\u0631\u06cc\u0627\u0646 \u062e\u0627\u0635\u06cc \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u06af\u0632\u0627\u0631\u0634 \u0622\u0646 \u0648 \u062a\u0645\u0627\u0645 \u062e\u0631\u0648\u062c\u06cc \u0627\u062c\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361918_15_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"451\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/1688361918_29_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"600\" title=\"\"><\/p>\n<p>\u062f\u0631 \u0628\u0627\u0644\u0627 \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u06cc\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0647\u0631 \u06cc\u06a9\u0634\u0646\u0628\u0647 \u062f\u0631 \u0633\u0627\u0639\u062a 10 \u0635\u0628\u062d UTC \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0645. <\/p>\n<p>\u0641\u0631\u0627\u0645\u0648\u0634 \u0646\u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u0645\u0631\u0648\u0632 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u06cc\u062f \u062f\u0631 Github \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f \ud83d\ude09 \u062f\u0633\u062a\u0648\u0631\u0627\u062a git \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0631\u06cc\u062f\u061f<\/p>\n<p><code>git add .<\/code><\/p>\n<p><code>git commit -am \"add: qase and github actions support\"<\/code><\/p>\n<p><code>git push<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/07\/\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-11-\u06af\u0632\u0627\u0631\u0634-\u0642\u0627\u0633\u060c-\u0627\u0642\u062f\u0627\u0645\u0627\u062a-Github.gif\" loading=\"lazy\" width=\"640\" height=\"354\" data-animated=\"true\" alt=\"\" title=\"\"><\/p>\n<p>\u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u06af\u0627\u0647 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u06cc\u062f \u0645\u062a\u0634\u06a9\u0631\u0645  \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0628\u0627\u0634\u0647  \u0628\u0631\u0627\u06cc \u0647\u0631 \u0633\u0648\u0627\u0644\u06cc\u060c \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u06a9\u062c\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f: \u0644\u06cc\u0646\u06a9\u062f\u06cc\u0646 \u0645\u0646 <\/p>\n<p>\u06a9\u062f \u062a\u06a9\u0645\u06cc\u0644 \u0634\u062f\u0647 \u0627\u06cc\u0646 \u062f\u0631\u0633<\/p>\n<p>\u0627\u06af\u0631 \u0686\u06cc\u0632 \u062c\u062f\u06cc\u062f\u06cc \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u062f \u0628\u0627 \u062e\u0631\u06cc\u062f \u06cc\u06a9 \u0642\u0647\u0648\u0647 \u0627\u0632 \u06a9\u0627\u0631 \u0645\u0646 \u062d\u0645\u0627\u06cc\u062a \u06a9\u0646\u06cc\u062f \u2615<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/05\/1684631499_231_\u06a9\u0627\u0631\u06af\u0627\u0647-\u0633\u0631\u0648-\u0642\u0633\u0645\u062a-5-\u062f\u0633\u062a\u06a9\u0627\u0631\u06cc-\u0639\u0646\u0627\u0635\u0631-\u062f\u06a9\u0645\u0647\u060c-\u0648\u0631\u0648\u062f\u06cc\u060c-\u062f\u06a9\u0645\u0647.png\" alt=\"\u0628\u0631\u0627\u06cc \u0645\u0646 \u06cc\u06a9 \u0642\u0647\u0648\u0647 \u0628\u062e\u0631\" loading=\"lazy\" width=\"434\" height=\"100\" title=\"\"><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u06cc\u06a9 \u0622\u0634\u0641\u062a\u06af\u06cc Qase \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0633\u062a \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc \u062a\u0633\u062a\u060c \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u062a\u060c \u06af\u0632\u0627\u0631\u0634 \u06af\u06cc\u0631\u06cc \u0648 \u063a\u06cc\u0631\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0646\u062d\u0648\u0647 \u0627\u062a\u0635\u0627\u0644 \u062a\u0633\u062a \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 Cypress \u0648 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0646 \u0646\u062a\u0627\u06cc\u062c \u0628\u0647 Qase \u06cc\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u06af\u0631\u0641\u062a. \u0627\u06cc\u0646 \u0628\u0647 \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u06af\u0632\u0627\u0631\u0634 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062f\u0633\u062a\u06cc \u0648 \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f. \u0645\u0631\u0627\u062d\u0644: \u0628\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-28989","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/28989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=28989"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/28989\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=28989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=28989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=28989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}