{"id":338570,"date":"2022-09-21T09:00:32","date_gmt":"2022-09-21T09:00:32","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=338570"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=338570","title":{"rendered":"<span>\u041a\u0430\u043a \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438 Allure TestOps \u0432 \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0418\u0432\u0430\u043d \u0427\u0435\u0447\u0438\u043a\u043e\u0432, \u044f QA lead \u0432 \u041c\u0422\u0421 Digital, \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 <a href=\"http:\/\/wasd.tv\/\"><u>WASD.TV<\/u><\/a>. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043e\u043f\u044b\u0442\u043e\u043c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c (TMS) Allure TestOps \u0432 \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0410 \u0435\u0449\u0435 \u043e\u0442\u043c\u0435\u0447\u0443 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0443 \u043f\u0443\u0442\u0438 \u0438\u0445 \u043e\u0431\u0445\u043e\u0434\u0430. \u0421\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0442\u0435\u043c, \u043a\u0442\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e TMS \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0442\u0430\u043a\u0438\u0445 \u0442\u0430\u043a Zephyr, TestRail, Test IT.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/ddc\/1b2\/51d\/ddc1b251dd19f297a55da119b15c3cd4.jpeg\" width=\"1600\" height=\"903\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ddc\/1b2\/51d\/ddc1b251dd19f297a55da119b15c3cd4.jpeg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p><strong>Allure TestOps<\/strong> \u2013 \u044d\u0442\u043e \u043a\u043e\u0440\u043e\u0431\u043e\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u0440\u0443\u0447\u043d\u044b\u043c, \u0442\u0430\u043a \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c: \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u044b \u0438 \u0447\u0435\u043a-\u043b\u0438\u0441\u0442\u044b, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0443\u0447\u043d\u044b\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b, \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u0435\u0444\u0435\u043a\u0442\u044b \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435. \u0422\u0430\u043a\u0436\u0435 \u0443 Allure \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0434\u043b\u044f QA \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Jira Server, Confluence, Jenkins CI\/CD, \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u043d\u0430 Java + Maven + Cucumber + Gherkin + Serenity RestAssured (\u0434\u043b\u044f API \u0442\u0435\u0441\u0442\u043e\u0432) \u0438 Selenium (\u0434\u043b\u044f UI \u0442\u0435\u0441\u0442\u043e\u0432). \u041a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e TMS \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d Zephyr \u0434\u043b\u044f Jira, \u043d\u043e \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u043b \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u043d\u0430 Allure Test Ops. \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435?<\/p>\n<ol>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 Jira Server \u0438 Allure TestOps.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0438\u0437 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Zephyr \u0432 Jira \u0432 Allure TestOps \u0438 \u0443\u0439\u0442\u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u0442 Zephyr.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432 \u0432 Allure TestOps, \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u0432 \u0435\u0433\u043e \u0441 \u043d\u0430\u0448\u0435\u0439 \u0434\u0436\u043e\u0431\u043e\u0439 \u0432 Jenkins CI\/CD \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 Gitlab CI\/CD, \u043d\u043e \u043e\u043f\u044b\u0442 \u0441 Jenkins \u0431\u044b\u043b \u0442\u0430\u043a\u0436\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d \u0434\u043b\u044f \u043d\u0430\u0441.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0440\u0443\u0447\u043d\u044b\u0435 \u0438 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 Allure TestOps.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f QA-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e Allure Test Ops<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 Allure TestOps.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<\/li>\n<\/ol>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u0442\u0430\u043f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e:<\/p>\n<p><strong>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Jira Server \u0438\u043b\u0438 Jira Cloud \u2013 <\/strong>\u0434\u0435\u043b\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Allure, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Jira. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 Jira \u0432 Allure TestOps, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0440\u0435\u0434\u044b \u0438 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 Jira Server.<\/p>\n<h4>Allure TestOps<\/h4>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b2\/e42\/edf\/4b2e42edfafa77b023045217546e4258.png\" width=\"2966\" height=\"1730\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4b2\/e42\/edf\/4b2e42edfafa77b023045217546e4258.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b6\/b02\/fec\/6b6b02feccfb194b5f59fe20c845ae4b.png\" width=\"3456\" height=\"1972\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b6\/b02\/fec\/6b6b02feccfb194b5f59fe20c845ae4b.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 Jira \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d <strong>Allure TestOps for JIRA<\/strong><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bce\/ec0\/06e\/bceec006e51587f60b8c869df7723cbc.png\" width=\"1600\" height=\"525\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bce\/ec0\/06e\/bceec006e51587f60b8c869df7723cbc.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b Allure Test Ops, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e 4.x.x \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c id \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Jira \u0432 Allure. \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439<a href=\"https:\/\/docs.qameta.io\/allure-testops\/integrations\/issue-trackers\/jira\/server\/\"> <u>\u043c\u0430\u043d\u0443\u0430\u043b<\/u><\/a>.<\/p>\n<h4>Jira Server<\/h4>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/33f\/876\/a01\/33f876a01e90460a55fcdd4fca4b7d93.png\" width=\"1226\" height=\"986\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/33f\/876\/a01\/33f876a01e90460a55fcdd4fca4b7d93.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u2013 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Jira \u043d\u0435 \u043d\u0438\u0436\u0435 8.4 (Jira Server) \u0438 Allure TestOps \u043d\u0435 \u043d\u0438\u0436\u0435 4.2.2, \u0438\u043d\u0430\u0447\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439, \u0443 \u043d\u0430\u0441, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u0441 Allure \u0432 Jira.<\/p>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438:<\/strong> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u0437 Allure \u0432 Jira.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fd7\/20a\/bf8\/fd720abf87d1c48926409b280f6f3135.png\" width=\"1600\" height=\"376\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd7\/20a\/bf8\/fd720abf87d1c48926409b280f6f3135.png\"\/><figcaption><\/figcaption><\/figure>\n<p><strong>\u041a\u0435\u0439\u0441\u044b \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Zephyr \u0432 Jira \u043c\u044b \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043b\u0438<\/strong> \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u0440\u0438\u043f\u0442 Qameta, \u0434\u043b\u044f \u043d\u0430\u0441 \u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443.<a href=\"https:\/\/qameta.notion.site\/3P-TMS-Migration-script-e3b8373fb8764ab5834cbd8344708970\"> <u>\u0421\u043a\u0440\u0438\u043f\u0442<\/u><\/a> \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043a \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430\u043c Allure \u0438 Jira. \u0412\u044b\u0437\u044b\u0432\u0430\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f<a href=\"https:\/\/qameta.notion.site\/Zephyr-Scale-TM4J-for-Jira-Server-migration-5af76ef62b324e26942d5305c44d7d01\"> <u>json<\/u><\/a> \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430. <\/p>\n<pre><code>java -jar allure-testops-migration-2.9.5.jar config<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043d\u0435 \u0431\u044b\u043b\u043e. \u0412\u0441\u0435 \u043d\u0430\u0448\u0438 2000 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u043a\u0435\u0439\u0441\u043e\u0432 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 Test Cases Allure TestOps, \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u044b.<\/p>\n<p><strong>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Jenkins CI\/CD<\/strong> \u0437\u0430\u043d\u044f\u043b\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u044b\u043b\u0438 \u043a\u0430\u043a \u0441 \u0441\u0430\u043c\u043e\u0439 \u0434\u0436\u043e\u0431\u043e\u0439 \u0434\u0436\u0435\u043d\u043a\u0438\u043d\u0441\u0430, \u0442\u0430\u043a \u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041f\u043e\u0434\u0440\u0443\u0436\u0438\u0442\u044c Jenkins \u0438 Allure TestOps \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0412 Jenkins CI\/CD \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d <strong>Allure TestOps for Jenkins<\/strong> \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432 \u0432 Allure TestOps.<\/p>\n<h4>Jenkins<\/h4>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f9e\/bdf\/585\/f9ebdf585c495606ca14060f9a9ca408.png\" width=\"1600\" height=\"547\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f9e\/bdf\/585\/f9ebdf585c495606ca14060f9a9ca408.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Jenkins \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 Allure TestOps \u0438 \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u0438\u0435 \u043a\u0440\u0435\u0434\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d18\/171\/d4a\/d18171d4a3f0810520d8abb610069fa8.png\" width=\"1600\" height=\"1198\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d18\/171\/d4a\/d18171d4a3f0810520d8abb610069fa8.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 Allure Test Ops \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 Jenkins.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/edd\/517\/587\/edd5175875c82ef8cc585b4382b55218.png\" width=\"1600\" height=\"932\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/edd\/517\/587\/edd5175875c82ef8cc585b4382b55218.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/af9\/b18\/b27\/af9b18b272ba2500995939394529dbe2.png\" width=\"1600\" height=\"934\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/af9\/b18\/b27\/af9b18b272ba2500995939394529dbe2.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0423 \u043d\u0430\u0441 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u043d\u0430 Java \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Maven, Cucumber, Gherkin, Serenity \u0438 Selenium. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432 Allure \u0441 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b pom.xml. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<p><strong>pom.xml<\/strong><\/p>\n<pre><code class=\"xml\">&lt;dependencies> ......   &lt;dependency>     &lt;groupId>io.qameta.allure&lt;\/groupId>     &lt;artifactId>allure-junit4-aspect&lt;\/artifactId>     &lt;version>2.0-BETA15&lt;\/version>   &lt;\/dependency>   &lt;dependency>     &lt;groupId>io.qameta.allure&lt;\/groupId>     &lt;artifactId>allure-rest-assured&lt;\/artifactId>     &lt;version>2.18.1&lt;\/version>   &lt;\/dependency>   &lt;dependency>     &lt;groupId>io.qameta.allure&lt;\/groupId>     &lt;artifactId>allure-cucumber5-jvm&lt;\/artifactId>     &lt;version>2.18.0&lt;\/version>   &lt;\/dependency> ......   &lt;build>         &lt;plugins>             &lt;plugin>                 &lt;groupId>org.apache.maven.plugins&lt;\/groupId>                 &lt;artifactId>maven-surefire-plugin&lt;\/artifactId>                 &lt;version>3.0.0-M4&lt;\/version>                 &lt;configuration>                   &lt;forkCount>3&lt;\/forkCount>                     &lt;reuseForks>true&lt;\/reuseForks>                     &lt;argLine>-Xmx1024m -XX:MaxPermSize=256m&lt;\/argLine>                     &lt;testFailureIgnore>true&lt;\/testFailureIgnore>                     &lt;includes>                         &lt;include>**\/*${type.of.suite}.java&lt;\/include>                     &lt;\/includes>                     &lt;systemPropertyVariables>                         &lt;webdriver.base.url>${webdriver.base.url}&lt;\/webdriver.base.url>                         &lt;allure.results.directory>${project.build.directory}\/allure-results&lt;\/allure.results.directory>                     &lt;\/systemPropertyVariables>                     &lt;parallel>classes&lt;\/parallel>                     &lt;threadCount>${parallel.tests}&lt;\/threadCount>                     &lt;forkCount>${parallel.tests}&lt;\/forkCount>                 &lt;\/configuration>                 &lt;dependencies>                     &lt;dependency>                         &lt;groupId>org.aspectj&lt;\/groupId>                         &lt;artifactId>aspectjweaver&lt;\/artifactId>                         &lt;version>1.7.4&lt;\/version>                     &lt;\/dependency>                 &lt;\/dependencies>                 &lt;executions>                     &lt;execution>                         &lt;goals>                             &lt;goal>test&lt;\/goal>                         &lt;\/goals>                     &lt;\/execution>                 &lt;\/executions>           &lt;\/plugin>       &lt;\/plugins>   &lt;\/build><\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u0431\u0440\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0432 Cucumber \u2013 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f API \u0438 Ui-\u043a\u043b\u0430\u0441\u0441\u043e\u0432.<\/p>\n<p><strong>ApiCucumberTestSuite.java<\/strong><\/p>\n<pre><code class=\"java\">package starter.runner.api;  import io.cucumber.junit.Cucumber;  import io.cucumber.junit.CucumberOptions;  import org.junit.runner.RunWith;   @RunWith(Cucumber.class)  @CucumberOptions(            plugin = {\"io.qameta.allure.cucumber5jvm.AllureCucumber5Jvm\"},            features = \"src\/test\/resources\/features\/api\/\",            glue = {\"starter\"} )  public class ApiCucumberTestSuite {}<\/code><\/pre>\n<p><strong>UiCucumberTestSuite.java<\/strong><\/p>\n<pre><code class=\"java\">package starter.runner.ui;  import io.cucumber.junit.Cucumber;  import io.cucumber.junit.CucumberOptions;  import org.junit.runner.RunWith;  @RunWith(Cucumber.class)  @CucumberOptions(  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0plugin = {\"io.qameta.allure.cucumber5jvm.AllureCucumber5Jvm\"},            features = \"src\/test\/resources\/features\/ui\/\",            glue = {\"starter\"} )  public class UiCucumberTestSuite {}<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0442\u0435\u0441\u0442\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 <strong>allure.label.layer<\/strong> \u0432 features \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p><strong>authorizationApi.feature<\/strong><\/p>\n<pre><code class=\"java\">@auth @api @all @smoke @allure.label.layer=Api  \u0424\u0443\u043d\u043a\u0446\u0438\u044f: \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f  \u00a0\u00a0\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 API  \u00a0\u00a0@positive @api  \u00a0\u00a0\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f  \u00a0\u00a0\u00a0\u00a0\u041a\u043e\u0433\u0434\u0430 &lt;User> \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 API  \u00a0\u00a0\u00a0\u00a0\u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 access token  \u00a0\u00a0\u00a0\u00a0\u041f\u0440\u0438\u043c\u0435\u0440\u044b:  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| User\u00a0 |  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| user1 |<\/code><\/pre>\n<p><strong>authorizationUi.feature<\/strong><\/p>\n<pre><code class=\"java\">@auth @ui @all @allure.label.layer=Ui  \u0424\u0443\u043d\u043a\u0446\u0438\u044f: \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f  \u00a0\u00a0\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442\u0441\u044f  \u00a0\u00a0@positive @ui  \u00a0\u00a0\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f  \u00a0\u00a0\u00a0\u00a0\u0414\u0430\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443  \u00a0\u00a0\u00a0\u00a0\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u044e\u0437\u0435\u0440\u043e\u043c &lt;User>  \u00a0\u00a0\u00a0\u00a0\u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u044e\u0437\u0435\u0440\u0430 &lt;User>  \u00a0\u00a0\u00a0\u00a0\u041f\u0440\u0438\u043c\u0435\u0440\u044b:  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| User\u00a0 |  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| user1 |  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| user3 |<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f API \u0442\u0435\u0441\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 SerenityRest \u0432 Allure TestOps \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 \u043a\u043e\u0434\u0435 \u0432 \u0440\u0435\u0441\u043f\u043e\u043d\u0441\u044b \u0444\u0438\u043b\u044c\u0442\u0440 \u0441 AllureRestAssured.<\/p>\n<p><strong>ApiAuthorizationStepDefinitions.java<\/strong><\/p>\n<pre><code class=\"java\">......  \u00a0\u00a0JSONObject requestBody = new JSONObject();  \u00a0\u00a0requestBody.put(\"user_email\", user_email);  \u00a0\u00a0requestBody.put(\"user_password\", user_password);  \u00a0\u00a0response = SerenityRest.given().filter(new AllureRestAssured()).log().all().  \u00a0\u00a0and().  \u00a0\u00a0body(requestBody.toMap()).  \u00a0\u00a0contentType(ContentType.JSON).  \u00a0\u00a0post(EndPoints.tokens);  ......<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f UI-\u0442\u0435\u0441\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 Selenium \u0432 Allure TestOps \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 \u043a\u043e\u0434\u0435 \u0448\u0430\u0433\u0438 \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043a\u0440\u0438\u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u0430 AllureForScreenshot.<\/p>\n<p><strong>AllureForScreenshot.java<\/strong><\/p>\n<pre><code class=\"java\">package allure;  import io.qameta.allure.Allure;  import org.openqa.selenium.OutputType;  import org.openqa.selenium.TakesScreenshot;  import org.openqa.selenium.WebDriver;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  public class AllureForScreenshot {  \u00a0\u00a0\u00a0\u00a0public void takeScreenshot(WebDriver webDriver) throws FileNotFoundException {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0File screenshotAs = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Allure.addAttachment(\"Screenshot\", new FileInputStream(screenshotAs));  \u00a0\u00a0\u00a0\u00a0}  }<\/code><\/pre>\n<p><strong>UiAuthorizationStepDefinitions.java<\/strong><\/p>\n<pre><code class=\"java\">......  switch (user) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0case \"user1\":  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(mainPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mainPage.openAuthForm();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.fillEmailField(user1Email);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.clickAuthLoginButton();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.clickPasswordButton();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.fillPassField(user1Pass);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.clickOnEnterButton();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;  ......<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b API \u0438 UI-\u0442\u0435\u0441\u0442\u043e\u0432:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6d1\/1f4\/7ff\/6d11f47ffdbfc0916ed81b99c6fb2472.png\" width=\"1600\" height=\"890\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d1\/1f4\/7ff\/6d11f47ffdbfc0916ed81b99c6fb2472.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c03\/090\/8a4\/c030908a4cf501b29f6626a989fb14a5.png\" width=\"1600\" height=\"862\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c03\/090\/8a4\/c030908a4cf501b29f6626a989fb14a5.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421 \u0434\u0436\u043e\u0431\u043e\u0439 \u0432 Jenkins \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f. \u041e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043d\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435, \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0438\u043b\u0434\u0430 \u043b\u0435\u0436\u0430\u043b\u0430 \u0432 Jenkinsfile. Allure TestOps \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0430\u043c\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0434\u0436\u043e\u0431\u044b \u0438\u0437 Allure \u043e\u043d\u0430 \u0442\u0443\u043f\u043e \u0432\u0438\u0441\u0435\u043b\u0430 \u0432 Jenkins \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0448\u0430\u0433\u0435, \u043e\u0436\u0438\u0434\u0430\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0432\u0432\u043e\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u2013 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 Jenkinsfile \u043f\u043e\u0434 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0438\u043f \u0431\u0438\u043b\u0434\u0430 \u0432 Jenkins.<\/p>\n<h4>Jenkins<\/h4>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/78d\/ab8\/610\/78dab86105f7166f52f3f792bec88069.png\" width=\"1600\" height=\"1111\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/78d\/ab8\/610\/78dab86105f7166f52f3f792bec88069.png\"\/><figcaption><\/figcaption><\/figure>\n<p><strong>Jenkinsfile<\/strong><\/p>\n<pre><code class=\"bash\">pipeline {  \u00a0\u00a0agent any  \u00a0\u00a0parameters {  \u00a0\u00a0\u00a0\u00a0gitParameter branchFilter: 'origin\/(.*)', defaultValue: '', name: 'BRANCH', type: 'PT_BRANCH'  \u00a0\u00a0\u00a0\u00a0choice(name: 'TEST_SUITE', choices: ['TestSuite', 'Parallel'], description: '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432')  \u00a0\u00a0\u00a0\u00a0choice(name: 'TYPE_OF_TESTS', choices: ['@api', '@ui'], description: '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043f \u0442\u0435\u0441\u0442\u043e\u0432')  \u00a0\u00a0\u00a0\u00a0choice(name: 'MODULE_OF_TESTS', choices: ['\u0421\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0442\u0435\u0441\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 @'],  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0description: '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u0442\u0435\u0441\u0442\u043e\u0432')  \u00a0\u00a0\u00a0\u00a0choice(name: 'ENV_1', choices: ['\u0421\u043f\u0438\u0441\u043e\u043a \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0435\u043d\u0434\u043e\u0432'],  \u00a0\u00a0\u00a0\u00a0\u00a0description: '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0435\u043d\u0434')  \u00a0\u00a0}  \u00a0\u00a0stages {  \u00a0\u00a0\u00a0\u00a0stage(\"Run tests\") {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0steps {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0script {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0def inptext = readFile file: \"serenity.properties\"           inptext = inptext.replaceAll(\"env1\", \"${params.ENV_1}\")           writeFile file: \"serenity.properties\", text: inptext           sh \"\"\"ls .\/\"\"\"           wrap([$class: 'Xvfb', additionalOptions: '', assignedLabels: '', displayNameOffset: 3, installationName:            'xvfb', parallelBuild: true, screen: '1600x1200x24']) {             sh 'printenv'             sh \"\"\"mvn clean verify -Dcucumber.options=\\\"--tags '${params.MODULE_OF_TESTS} and ${params.TYPE_OF_TESTS}'\\\" -Denvironment=${params.ENV_1} -Dtype.of.suite=${params.TEST_SUITE}\"\"\"           }  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0}  \u00a0\u00a0post {  \u00a0\u00a0\u00a0\u00a0always {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0withAllureUpload(indexExistingFiles: true, serverId: 'Id \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 Allure TestOps', projectId: '\u041d\u043e\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 Allure TestOps',  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0results: [  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[path: 'target\/allure-results']  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0}  }<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0438\u043b\u0434\u0430. \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0432 Jenkins:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cf5\/90a\/71b\/cf590a71bc935a27267c2730968f726d.png\" width=\"1600\" height=\"887\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cf5\/90a\/71b\/cf590a71bc935a27267c2730968f726d.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0436\u043e\u0431\u0430 \u0432 Allure TestOps \u0438\u043c\u0435\u0435\u0442 \u0432\u0438\u0434:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1d2\/617\/e13\/1d2617e13085832bb4f2565628115ec5.png\" width=\"1600\" height=\"235\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d2\/617\/e13\/1d2617e13085832bb4f2565628115ec5.png\"\/><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c2b\/474\/7ef\/c2b4747ef06f436ef2df9d602fe46abe.png\" width=\"1242\" height=\"1374\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c2b\/474\/7ef\/c2b4747ef06f436ef2df9d602fe46abe.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0431\u0438\u043b\u0434 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 environment. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0432\u0432\u043e\u0434 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0415\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441 \u0441 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438: Device, OS, Host, Browser, Environment \u2013 \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043b\u0438\u0431\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0434\u0436\u043e\u0431\u044b.<\/p>\n<p>\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432 Allure TestOps:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ef5\/5ee\/a6e\/ef55eea6e5ff6da7abf53115fc34c2ff.png\" width=\"1600\" height=\"131\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ef5\/5ee\/a6e\/ef55eea6e5ff6da7abf53115fc34c2ff.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434 \u0440\u0443\u0447\u043d\u044b\u0435 \u0438 \u0430\u0432\u0442\u043e \u0442\u0435\u0441\u0442\u044b \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043e\u0434\u0438\u043d \u043e\u0431\u0449\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/929\/5c7\/d53\/9295c7d53749317b7c54c6bc0d0ba2b6.png\" width=\"1600\" height=\"932\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/929\/5c7\/d53\/9295c7d53749317b7c54c6bc0d0ba2b6.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u043b \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0440\u0443\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0442\u0435\u0441\u0442 \u043a\u0435\u0439\u0441\u044b \u0438 \u0447\u0435\u043a-\u043b\u0438\u0441\u0442\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u0435\u0439\u0441\u044b \u043b\u0435\u0436\u0430\u0442 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 (API, UI). \u0412 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fea\/a3a\/82d\/feaa3a82d3e92ea4479f22487695ce35.png\" alt=\"    \" title=\"    \" width=\"550\" height=\"976\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fea\/a3a\/82d\/feaa3a82d3e92ea4479f22487695ce35.png\"\/><figcaption>    <\/figcaption><\/figure>\n<p>\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u043b \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 \u0440\u0443\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0442\u0435\u0441\u0442 \u043a\u0435\u0439\u0441\u044b \u0438 \u0447\u0435\u043a-\u043b\u0438\u0441\u0442\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u0435\u0439\u0441\u044b \u043b\u0435\u0436\u0430\u0442 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445 (API, UI). \u0412 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c.<\/p>\n<p>\u0412 Allure TestOps \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u0442\u0440\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0435\u0441\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b (\u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u044b, \u0447\u0435\u043a-\u043b\u0438\u0441\u0442\u044b).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/95d\/45e\/5ca\/95d45e5ca46e09d5a262d1ef7b28fd59.png\" width=\"1472\" height=\"650\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/95d\/45e\/5ca\/95d45e5ca46e09d5a262d1ef7b28fd59.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0435 \u043c\u043e\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u044d\u0433\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u0442\u0430\u0441\u043a\u0430\u043c\u0438 \u0432 \u0431\u0430\u0433\u0442\u0440\u0435\u043a\u0435\u0440\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043d\u0435\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0435\u0448\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u043e\u043b\u0438 (\u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446, \u0440\u0435\u0432\u044c\u044e\u0432\u0435\u0440 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u043b\u043e\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f);\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u044b;\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u0440\u0443\u0447\u043d\u044b\u0435 \u0438 \u0430\u0432\u0442\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u044b, \u043b\u0438\u043d\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0442\u043e\u0439 \u0436\u0435 Jira, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e \u0448\u0430\u0433\u0430\u043c, \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u044b (Passed, Failed, Skipped \u0438 \u043f\u0440\u043e\u0447\u0438\u0435).<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/478\/feb\/2e6\/478feb2e69f3c18e8c92217f1f9af9fb.png\" width=\"1468\" height=\"1342\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/478\/feb\/2e6\/478feb2e69f3c18e8c92217f1f9af9fb.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 Jira.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3ae\/b13\/4e9\/3aeb134e9bd8c04dcfc2a7c17679f9ac.png\" width=\"1600\" height=\"978\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3ae\/b13\/4e9\/3aeb134e9bd8c04dcfc2a7c17679f9ac.png\"\/><figcaption><\/figcaption><\/figure>\n<p>Allure TestOps \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441\u044b \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u0432 \u0431\u0430\u0433\u0442\u0440\u0435\u043a\u0435\u0440\u0435 (\u0447\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e) \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0445 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0432 Allure.<\/p>\n<p><strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432 Confluence<\/strong>, \u043f\u0440\u043e\u0432\u0435\u043b\u0438 QA-\u0440\u0435\u0442\u0440\u043e \u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0432\u0441\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c Allure TestOps.<\/p>\n<p><strong>\u041d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Allure. <\/strong>\u041d\u0430\u0448 \u0444\u043b\u043e\u0443: \u0430\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0435 \u043a\u0440\u043e\u0441\u0441\u0440\u0435\u0432\u044c\u044e, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430, \u0440\u0443\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u0441\u043c\u043e\u0443\u043a, \u0440\u0435\u0433\u0440\u0435\u0441\u0441), \u0434\u0435\u043f\u043b\u043e\u0439. <strong>\u041a\u0430\u043a\u0438\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043c\u044b \u0438\u0441\u043f\u044b\u0442\u0430\u043b\u0438:<\/strong>\u00a0<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u043f\u043a\u0438 \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430\u043c\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 Allure;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0434\u0430\u0447 \u0432 Jira \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0438\u0441\u043a\u043e\u043c\u0444\u043e\u0440\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 \u0431\u0430\u0433-\u0442\u0440\u0435\u043a\u0435\u0440 \u0434\u043b\u044f \u0434\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u0441\u043e\u043a;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u0440\u0435\u0432\u044c\u044e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 TMS;<\/p>\n<\/li>\n<li>\n<p>\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0436\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u0434\u043e\u0431\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e environments, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u0437\u0430 \u0440\u0430\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u043b\u0434\u043e\u0432 \u0432 Jenkins, \u043d\u043e \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c \u0434\u0435\u0444\u0435\u043a\u0442\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0441 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 pdf \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043b\u0438\u0446\u0430\u043c<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0448\u0435\u043b \u0441\u043f\u0440\u0438\u043d\u0442 \u0438 \u044f<strong> \u0441\u043e\u0431\u0440\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435<\/strong> QA-\u043e\u0442\u0434\u0435\u043b\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 Allure TestOps \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e AQL \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043d\u0438\u0445 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e<a href=\"https:\/\/docs.qameta.io\/allure-testops\/advanced\/aql\/format\/\"> <u>\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c<\/u><\/a> Allure. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0434\u0443\u044e\u0442, QA \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043d\u043e\u0432\u043e\u0439 TMS, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0440\u0443\u0447\u043d\u044b\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b, \u0437\u0430\u0432\u043e\u0434\u044f\u0442 \u0434\u0435\u0444\u0435\u043a\u0442\u044b. <strong>\u0427\u0435\u0433\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438:<\/strong> AQL \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 Allure TestOps \u0431\u0430\u0433\u043e\u0432 \u0438 \u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043d\u043e \u0432\u0440\u043e\u0434\u0435 \u0431\u044b Qameta \u0441\u043a\u043e\u0440\u043e \u0440\u0435\u043b\u0438\u0437\u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f0d\/2d5\/acf\/f0d2d5acfe52f4e32053c52627cf55b2.png\" width=\"1600\" height=\"929\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f0d\/2d5\/acf\/f0d2d5acfe52f4e32053c52627cf55b2.png\"\/><figcaption><\/figcaption><\/figure>\n<p><strong>\u0418\u0442\u043e\u0433:<\/strong> \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f Allure TestOps \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043d\u0435\u043c \u043f\u0440\u043e\u0448\u043b\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432. \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438<a href=\"https:\/\/qameta.io\/\"> Qameta<\/a> \u0437\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0437\u0430 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u043c\u043e\u0449\u044c. \u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u043c. \u0416\u0434\u0435\u043c \u0441 \u043d\u0435\u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c!<\/p>\n<p><strong>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0443\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u2013 \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043d\u0430 \u043d\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/strong><\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ru_mts\/blog\/689330\/\"> https:\/\/habr.com\/ru\/company\/ru_mts\/blog\/689330\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0418\u0432\u0430\u043d \u0427\u0435\u0447\u0438\u043a\u043e\u0432, \u044f QA lead \u0432 \u041c\u0422\u0421 Digital, \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 <a href=\"http:\/\/wasd.tv\/\"><u>WASD.TV<\/u><\/a>. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u043e\u043f\u044b\u0442\u043e\u043c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c (TMS) Allure TestOps \u0432 \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0410 \u0435\u0449\u0435 \u043e\u0442\u043c\u0435\u0447\u0443 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0443 \u043f\u0443\u0442\u0438 \u0438\u0445 \u043e\u0431\u0445\u043e\u0434\u0430. \u0421\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0442\u0435\u043c, \u043a\u0442\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u0443\u044e TMS \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0442\u0430\u043a\u0438\u0445 \u0442\u0430\u043a Zephyr, TestRail, Test IT.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p><strong>Allure TestOps<\/strong> \u2013 \u044d\u0442\u043e \u043a\u043e\u0440\u043e\u0431\u043e\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u0440\u0443\u0447\u043d\u044b\u043c, \u0442\u0430\u043a \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c: \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u044b \u0438 \u0447\u0435\u043a-\u043b\u0438\u0441\u0442\u044b, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0443\u0447\u043d\u044b\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b, \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u0435\u0444\u0435\u043a\u0442\u044b \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435. \u0422\u0430\u043a\u0436\u0435 \u0443 Allure \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0434\u043b\u044f QA \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Jira Server, Confluence, Jenkins CI\/CD, \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u043d\u0430 Java + Maven + Cucumber + Gherkin + Serenity RestAssured (\u0434\u043b\u044f API \u0442\u0435\u0441\u0442\u043e\u0432) \u0438 Selenium (\u0434\u043b\u044f UI \u0442\u0435\u0441\u0442\u043e\u0432). \u041a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e TMS \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d Zephyr \u0434\u043b\u044f Jira, \u043d\u043e \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u043b \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u043d\u0430 Allure Test Ops. \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435?<\/p>\n<ol>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 Jira Server \u0438 Allure TestOps.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0438\u0437 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Zephyr \u0432 Jira \u0432 Allure TestOps \u0438 \u0443\u0439\u0442\u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u0442 Zephyr.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432 \u0432 Allure TestOps, \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u0432 \u0435\u0433\u043e \u0441 \u043d\u0430\u0448\u0435\u0439 \u0434\u0436\u043e\u0431\u043e\u0439 \u0432 Jenkins CI\/CD \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 Gitlab CI\/CD, \u043d\u043e \u043e\u043f\u044b\u0442 \u0441 Jenkins \u0431\u044b\u043b \u0442\u0430\u043a\u0436\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d \u0434\u043b\u044f \u043d\u0430\u0441.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0440\u0443\u0447\u043d\u044b\u0435 \u0438 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 Allure TestOps.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f QA-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e Allure Test Ops<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 Allure TestOps.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<\/li>\n<\/ol>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u0442\u0430\u043f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e:<\/p>\n<p><strong>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Jira Server \u0438\u043b\u0438 Jira Cloud \u2013 <\/strong>\u0434\u0435\u043b\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Allure, \u0442\u0430\u043a \u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Jira. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 Jira \u0432 Allure TestOps, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0440\u0435\u0434\u044b \u0438 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 Jira Server.<\/p>\n<h4>Allure TestOps<\/h4>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 Jira \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d <strong>Allure TestOps for JIRA<\/strong><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b Allure Test Ops, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e 4.x.x \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c id \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Jira \u0432 Allure. \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439<a href=\"https:\/\/docs.qameta.io\/allure-testops\/integrations\/issue-trackers\/jira\/server\/\"> <u>\u043c\u0430\u043d\u0443\u0430\u043b<\/u><\/a>.<\/p>\n<h4>Jira Server<\/h4>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u2013 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Jira \u043d\u0435 \u043d\u0438\u0436\u0435 8.4 (Jira Server) \u0438 Allure TestOps \u043d\u0435 \u043d\u0438\u0436\u0435 4.2.2, \u0438\u043d\u0430\u0447\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439, \u0443 \u043d\u0430\u0441, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u0441 Allure \u0432 Jira.<\/p>\n<p><strong>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438:<\/strong> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u0437 Allure \u0432 Jira.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p><strong>\u041a\u0435\u0439\u0441\u044b \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Zephyr \u0432 Jira \u043c\u044b \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043b\u0438<\/strong> \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u0440\u0438\u043f\u0442 Qameta, \u0434\u043b\u044f \u043d\u0430\u0441 \u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443.<a href=\"https:\/\/qameta.notion.site\/3P-TMS-Migration-script-e3b8373fb8764ab5834cbd8344708970\"> <u>\u0421\u043a\u0440\u0438\u043f\u0442<\/u><\/a> \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043a \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430\u043c Allure \u0438 Jira. \u0412\u044b\u0437\u044b\u0432\u0430\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f<a href=\"https:\/\/qameta.notion.site\/Zephyr-Scale-TM4J-for-Jira-Server-migration-5af76ef62b324e26942d5305c44d7d01\"> <u>json<\/u><\/a> \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430. <\/p>\n<pre><code>java -jar allure-testops-migration-2.9.5.jar config<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043d\u0435 \u0431\u044b\u043b\u043e. \u0412\u0441\u0435 \u043d\u0430\u0448\u0438 2000 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u043a\u0435\u0439\u0441\u043e\u0432 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 Test Cases Allure TestOps, \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u044b.<\/p>\n<p><strong>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Jenkins CI\/CD<\/strong> \u0437\u0430\u043d\u044f\u043b\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u044b\u043b\u0438 \u043a\u0430\u043a \u0441 \u0441\u0430\u043c\u043e\u0439 \u0434\u0436\u043e\u0431\u043e\u0439 \u0434\u0436\u0435\u043d\u043a\u0438\u043d\u0441\u0430, \u0442\u0430\u043a \u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041f\u043e\u0434\u0440\u0443\u0436\u0438\u0442\u044c Jenkins \u0438 Allure TestOps \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0412 Jenkins CI\/CD \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d <strong>Allure TestOps for Jenkins<\/strong> \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432 \u0432 Allure TestOps.<\/p>\n<h4>Jenkins<\/h4>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 Jenkins \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 Allure TestOps \u0438 \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u0438\u0435 \u043a\u0440\u0435\u0434\u044b.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 Allure Test Ops \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 Jenkins.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0423 \u043d\u0430\u0441 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u043d\u0430 Java \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Maven, Cucumber, Gherkin, Serenity \u0438 Selenium. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432 Allure \u0441 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b pom.xml. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<p><strong>pom.xml<\/strong><\/p>\n<pre><code class=\"xml\">&lt;dependencies> ......   &lt;dependency>     &lt;groupId>io.qameta.allure&lt;\/groupId>     &lt;artifactId>allure-junit4-aspect&lt;\/artifactId>     &lt;version>2.0-BETA15&lt;\/version>   &lt;\/dependency>   &lt;dependency>     &lt;groupId>io.qameta.allure&lt;\/groupId>     &lt;artifactId>allure-rest-assured&lt;\/artifactId>     &lt;version>2.18.1&lt;\/version>   &lt;\/dependency>   &lt;dependency>     &lt;groupId>io.qameta.allure&lt;\/groupId>     &lt;artifactId>allure-cucumber5-jvm&lt;\/artifactId>     &lt;version>2.18.0&lt;\/version>   &lt;\/dependency> ......   &lt;build>         &lt;plugins>             &lt;plugin>                 &lt;groupId>org.apache.maven.plugins&lt;\/groupId>                 &lt;artifactId>maven-surefire-plugin&lt;\/artifactId>                 &lt;version>3.0.0-M4&lt;\/version>                 &lt;configuration>                   &lt;forkCount>3&lt;\/forkCount>                     &lt;reuseForks>true&lt;\/reuseForks>                     &lt;argLine>-Xmx1024m -XX:MaxPermSize=256m&lt;\/argLine>                     &lt;testFailureIgnore>true&lt;\/testFailureIgnore>                     &lt;includes>                         &lt;include>**\/*${type.of.suite}.java&lt;\/include>                     &lt;\/includes>                     &lt;systemPropertyVariables>                         &lt;webdriver.base.url>${webdriver.base.url}&lt;\/webdriver.base.url>                         &lt;allure.results.directory>${project.build.directory}\/allure-results&lt;\/allure.results.directory>                     &lt;\/systemPropertyVariables>                     &lt;parallel>classes&lt;\/parallel>                     &lt;threadCount>${parallel.tests}&lt;\/threadCount>                     &lt;forkCount>${parallel.tests}&lt;\/forkCount>                 &lt;\/configuration>                 &lt;dependencies>                     &lt;dependency>                         &lt;groupId>org.aspectj&lt;\/groupId>                         &lt;artifactId>aspectjweaver&lt;\/artifactId>                         &lt;version>1.7.4&lt;\/version>                     &lt;\/dependency>                 &lt;\/dependencies>                 &lt;executions>                     &lt;execution>                         &lt;goals>                             &lt;goal>test&lt;\/goal>                         &lt;\/goals>                     &lt;\/execution>                 &lt;\/executions>           &lt;\/plugin>       &lt;\/plugins>   &lt;\/build><\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u0431\u0440\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0432 Cucumber \u2013 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f API \u0438 Ui-\u043a\u043b\u0430\u0441\u0441\u043e\u0432.<\/p>\n<p><strong>ApiCucumberTestSuite.java<\/strong><\/p>\n<pre><code class=\"java\">package starter.runner.api;  import io.cucumber.junit.Cucumber;  import io.cucumber.junit.CucumberOptions;  import org.junit.runner.RunWith;   @RunWith(Cucumber.class)  @CucumberOptions(            plugin = {\"io.qameta.allure.cucumber5jvm.AllureCucumber5Jvm\"},            features = \"src\/test\/resources\/features\/api\/\",            glue = {\"starter\"} )  public class ApiCucumberTestSuite {}<\/code><\/pre>\n<p><strong>UiCucumberTestSuite.java<\/strong><\/p>\n<pre><code class=\"java\">package starter.runner.ui;  import io.cucumber.junit.Cucumber;  import io.cucumber.junit.CucumberOptions;  import org.junit.runner.RunWith;  @RunWith(Cucumber.class)  @CucumberOptions(  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0plugin = {\"io.qameta.allure.cucumber5jvm.AllureCucumber5Jvm\"},            features = \"src\/test\/resources\/features\/ui\/\",            glue = {\"starter\"} )  public class UiCucumberTestSuite {}<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0442\u0435\u0441\u0442\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 <strong>allure.label.layer<\/strong> \u0432 features \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p><strong>authorizationApi.feature<\/strong><\/p>\n<pre><code class=\"java\">@auth @api @all @smoke @allure.label.layer=Api  \u0424\u0443\u043d\u043a\u0446\u0438\u044f: \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f  \u00a0\u00a0\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 API  \u00a0\u00a0@positive @api  \u00a0\u00a0\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f  \u00a0\u00a0\u00a0\u00a0\u041a\u043e\u0433\u0434\u0430 &lt;User> \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 API  \u00a0\u00a0\u00a0\u00a0\u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 access token  \u00a0\u00a0\u00a0\u00a0\u041f\u0440\u0438\u043c\u0435\u0440\u044b:  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| User\u00a0 |  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| user1 |<\/code><\/pre>\n<p><strong>authorizationUi.feature<\/strong><\/p>\n<pre><code class=\"java\">@auth @ui @all @allure.label.layer=Ui  \u0424\u0443\u043d\u043a\u0446\u0438\u044f: \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f  \u00a0\u00a0\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442\u0441\u044f  \u00a0\u00a0@positive @ui  \u00a0\u00a0\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f: \u0443\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f  \u00a0\u00a0\u00a0\u00a0\u0414\u0430\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443  \u00a0\u00a0\u00a0\u00a0\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u044e\u0437\u0435\u0440\u043e\u043c &lt;User>  \u00a0\u00a0\u00a0\u00a0\u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u044e\u0437\u0435\u0440\u0430 &lt;User>  \u00a0\u00a0\u00a0\u00a0\u041f\u0440\u0438\u043c\u0435\u0440\u044b:  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| User\u00a0 |  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| user1 |  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0| user3 |<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f API \u0442\u0435\u0441\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 SerenityRest \u0432 Allure TestOps \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 \u043a\u043e\u0434\u0435 \u0432 \u0440\u0435\u0441\u043f\u043e\u043d\u0441\u044b \u0444\u0438\u043b\u044c\u0442\u0440 \u0441 AllureRestAssured.<\/p>\n<p><strong>ApiAuthorizationStepDefinitions.java<\/strong><\/p>\n<pre><code class=\"java\">......  \u00a0\u00a0JSONObject requestBody = new JSONObject();  \u00a0\u00a0requestBody.put(\"user_email\", user_email);  \u00a0\u00a0requestBody.put(\"user_password\", user_password);  \u00a0\u00a0response = SerenityRest.given().filter(new AllureRestAssured()).log().all().  \u00a0\u00a0and().  \u00a0\u00a0body(requestBody.toMap()).  \u00a0\u00a0contentType(ContentType.JSON).  \u00a0\u00a0post(EndPoints.tokens);  ......<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f UI-\u0442\u0435\u0441\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 Selenium \u0432 Allure TestOps \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 \u043a\u043e\u0434\u0435 \u0448\u0430\u0433\u0438 \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043a\u0440\u0438\u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u0430 AllureForScreenshot.<\/p>\n<p><strong>AllureForScreenshot.java<\/strong><\/p>\n<pre><code class=\"java\">package allure;  import io.qameta.allure.Allure;  import org.openqa.selenium.OutputType;  import org.openqa.selenium.TakesScreenshot;  import org.openqa.selenium.WebDriver;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  public class AllureForScreenshot {  \u00a0\u00a0\u00a0\u00a0public void takeScreenshot(WebDriver webDriver) throws FileNotFoundException {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0File screenshotAs = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Allure.addAttachment(\"Screenshot\", new FileInputStream(screenshotAs));  \u00a0\u00a0\u00a0\u00a0}  }<\/code><\/pre>\n<p><strong>UiAuthorizationStepDefinitions.java<\/strong><\/p>\n<pre><code class=\"java\">......  switch (user) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0case \"user1\":  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(mainPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mainPage.openAuthForm();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.fillEmailField(user1Email);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.clickAuthLoginButton();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.clickPasswordButton();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.fillPassField(user1Pass);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0allureForScreenshot.takeScreenshot(authorizationPage.getDriver());  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0authorizationPage.clickOnEnterButton();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;  ......<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b API \u0438 UI-\u0442\u0435\u0441\u0442\u043e\u0432:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421 \u0434\u0436\u043e\u0431\u043e\u0439 \u0432 Jenkins \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-338570","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/338570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=338570"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/338570\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=338570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=338570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=338570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}