initial commit

This commit is contained in:
a.krasnov
2019-09-22 21:26:13 +03:00
commit 5392fa46c2
62 changed files with 1835 additions and 0 deletions
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,41 @@
INFO root:screenshots.py:103 Try make screenshots. Attempts: 0
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 0)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 600)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 1200)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 1800)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 2400)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 3000)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 3600)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 4200)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 4800)»
INFO root:image_processor.py:101 Screen size: (1600, 9600)
INFO root:image_processor.py:105 Image added, offset is 0
INFO root:image_processor.py:105 Image added, offset is 1200
INFO root:image_processor.py:105 Image added, offset is 2400
INFO root:image_processor.py:105 Image added, offset is 3600
INFO root:image_processor.py:105 Image added, offset is 4800
INFO root:image_processor.py:105 Image added, offset is 6000
INFO root:image_processor.py:105 Image added, offset is 7200
INFO root:image_processor.py:105 Image added, offset is 8400
INFO root:screenshots.py:75 element: .search2, coordinates: (366, 542, 1570, 614)
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 0)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 600)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 1200)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 1800)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 2400)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 3000)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 3600)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 4200)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 4800)»
INFO root:image_processor.py:101 Screen size: (1600, 9600)
INFO root:image_processor.py:105 Image added, offset is 0
INFO root:image_processor.py:105 Image added, offset is 1200
INFO root:image_processor.py:105 Image added, offset is 2400
INFO root:image_processor.py:105 Image added, offset is 3600
INFO root:image_processor.py:105 Image added, offset is 4800
INFO root:image_processor.py:105 Image added, offset is 6000
INFO root:image_processor.py:105 Image added, offset is 7200
INFO root:image_processor.py:105 Image added, offset is 8400
INFO root:screenshots.py:75 element: .search2, coordinates: (366, 544, 1570, 616)
INFO root:screenshots.py:122 Coords test: (366, 542, 1570, 614), coords prod: (366, 544, 1570, 616)
INFO root:screenshots.py:123 Size test: 1206, size prod: 1206
@@ -0,0 +1 @@
https://yandex.ru/
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

@@ -0,0 +1,45 @@
INFO root:screenshots.py:103 Try make screenshots. Attempts: 0
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 0)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 600)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 1200)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 1800)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 2400)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 3000)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 3600)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 4200)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 4800)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 5400)»
INFO root:image_processor.py:101 Screen size: (1600, 10800)
INFO root:image_processor.py:105 Image added, offset is 0
INFO root:image_processor.py:105 Image added, offset is 1200
INFO root:image_processor.py:105 Image added, offset is 2400
INFO root:image_processor.py:105 Image added, offset is 3600
INFO root:image_processor.py:105 Image added, offset is 4800
INFO root:image_processor.py:105 Image added, offset is 6000
INFO root:image_processor.py:105 Image added, offset is 7200
INFO root:image_processor.py:105 Image added, offset is 8400
INFO root:image_processor.py:105 Image added, offset is 9600
INFO root:screenshots.py:75 element: .news__header, coordinates: (24, 104, 1082, 412)
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 0)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 600)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 1200)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 1800)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 2400)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 3000)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 3600)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 4200)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 4800)»
INFO root:screenshots.py:32 Scroll to «window.scrollTo(0, 5400)»
INFO root:image_processor.py:101 Screen size: (1600, 10800)
INFO root:image_processor.py:105 Image added, offset is 0
INFO root:image_processor.py:105 Image added, offset is 1200
INFO root:image_processor.py:105 Image added, offset is 2400
INFO root:image_processor.py:105 Image added, offset is 3600
INFO root:image_processor.py:105 Image added, offset is 4800
INFO root:image_processor.py:105 Image added, offset is 6000
INFO root:image_processor.py:105 Image added, offset is 7200
INFO root:image_processor.py:105 Image added, offset is 8400
INFO root:image_processor.py:105 Image added, offset is 9600
INFO root:screenshots.py:75 element: .news__header, coordinates: (24, 104, 1082, 412)
INFO root:screenshots.py:122 Coords test: (24, 104, 1082, 412), coords prod: (24, 104, 1082, 412)
INFO root:screenshots.py:123 Size test: 1102, size prod: 1102
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -0,0 +1 @@
https://yandex.ru/
+2
View File
@@ -0,0 +1,2 @@
"Epic","Feature","Story","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN"
"","","","2","0","0","0","0"
1 Epic Feature Story FAILED BROKEN PASSED SKIPPED UNKNOWN
2 2 0 0 0 0
+29
View File
@@ -0,0 +1,29 @@
{
"uid" : "b1a8273437954620fa374b796ffaacdd",
"name" : "behaviors",
"children" : [ {
"name" : "test_search_field",
"uid" : "ff3cf8e351b44c24",
"parentUid" : "b1a8273437954620fa374b796ffaacdd",
"status" : "failed",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"flaky" : false,
"parameters" : [ ]
}, {
"name" : "test_news_widget",
"uid" : "35bf2eac0f3b5d9d",
"parentUid" : "b1a8273437954620fa374b796ffaacdd",
"status" : "failed",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"flaky" : false,
"parameters" : [ ]
} ]
}
+2
View File
@@ -0,0 +1,2 @@
"Category","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN"
"Product defects","2","0","0","0","0"
1 Category FAILED BROKEN PASSED SKIPPED UNKNOWN
2 Product defects 2 0 0 0 0
+41
View File
@@ -0,0 +1,41 @@
{
"uid" : "4b4757e66a1912dae1a509f688f20b0f",
"name" : "categories",
"children" : [ {
"name" : "Product defects",
"children" : [ {
"name" : "AssertionError: «Поисковый блок» отличается на страницах:\nhttps://yandex.ru/\nи\nhttps://yandex.ru/",
"children" : [ {
"name" : "test_search_field",
"uid" : "ff3cf8e351b44c24",
"parentUid" : "21cceaf81a44534c14791402ab60e7a0",
"status" : "failed",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"flaky" : false,
"parameters" : [ ]
} ],
"uid" : "21cceaf81a44534c14791402ab60e7a0"
}, {
"name" : "AssertionError: «Хэдер с новостями» отличается на страницах:\nhttps://yandex.ru/\nи\nhttps://yandex.ru/",
"children" : [ {
"name" : "test_news_widget",
"uid" : "35bf2eac0f3b5d9d",
"parentUid" : "3095de4d040f98faf6d1c7fbdd61b3ce",
"status" : "failed",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"flaky" : false,
"parameters" : [ ]
} ],
"uid" : "3095de4d040f98faf6d1c7fbdd61b3ce"
} ],
"uid" : "8fb3a91ba5aaf9de24cc8a92edc82b5d"
} ]
}
+33
View File
@@ -0,0 +1,33 @@
{
"uid" : "83edc06c07f9ae9e47eb6dd1b683e4e2",
"name" : "packages",
"children" : [ {
"name" : "screenshot_tests.tests.yandex_main_page_test",
"children" : [ {
"name" : "test_search_field",
"uid" : "ff3cf8e351b44c24",
"parentUid" : "4a62f88a06567bac990f04c32bc01572",
"status" : "failed",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"flaky" : false,
"parameters" : [ ]
}, {
"name" : "test_news_widget",
"uid" : "35bf2eac0f3b5d9d",
"parentUid" : "4a62f88a06567bac990f04c32bc01572",
"status" : "failed",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"flaky" : false,
"parameters" : [ ]
} ],
"uid" : "screenshot_tests.tests.yandex_main_page_test"
} ]
}
+3
View File
@@ -0,0 +1,3 @@
"Status","Start Time","Stop Time","Duration in ms","Parent Suite","Suite","Sub Suite","Test Class","Test Method","Name","Description"
"failed","Sun Sep 22 21:17:01 MSK 2019","Sun Sep 22 21:17:27 MSK 2019","25996","screenshot_tests.tests","yandex_main_page_test","TestYandexMainPage","","","test_search_field",""
"failed","Sun Sep 22 21:17:02 MSK 2019","Sun Sep 22 21:17:30 MSK 2019","27582","screenshot_tests.tests","yandex_main_page_test","TestYandexMainPage","","","test_news_widget","Test for news widget."
1 Status Start Time Stop Time Duration in ms Parent Suite Suite Sub Suite Test Class Test Method Name Description
2 failed Sun Sep 22 21:17:01 MSK 2019 Sun Sep 22 21:17:27 MSK 2019 25996 screenshot_tests.tests yandex_main_page_test TestYandexMainPage test_search_field
3 failed Sun Sep 22 21:17:02 MSK 2019 Sun Sep 22 21:17:30 MSK 2019 27582 screenshot_tests.tests yandex_main_page_test TestYandexMainPage test_news_widget Test for news widget.
+41
View File
@@ -0,0 +1,41 @@
{
"uid" : "98d3104e051c652961429bf95fa0b5d6",
"name" : "suites",
"children" : [ {
"name" : "screenshot_tests.tests",
"children" : [ {
"name" : "yandex_main_page_test",
"children" : [ {
"name" : "TestYandexMainPage",
"children" : [ {
"name" : "test_search_field",
"uid" : "ff3cf8e351b44c24",
"parentUid" : "14e9fffecf2f365bb44ac41687f56ae6",
"status" : "failed",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"flaky" : false,
"parameters" : [ ]
}, {
"name" : "test_news_widget",
"uid" : "35bf2eac0f3b5d9d",
"parentUid" : "14e9fffecf2f365bb44ac41687f56ae6",
"status" : "failed",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"flaky" : false,
"parameters" : [ ]
} ],
"uid" : "14e9fffecf2f365bb44ac41687f56ae6"
} ],
"uid" : "09b294b6c70fff4ed23fcba65129c6aa"
} ],
"uid" : "24b6faeef3ea7966bb42e6050a32e636"
} ]
}
@@ -0,0 +1,214 @@
{
"uid" : "35bf2eac0f3b5d9d",
"name" : "test_news_widget",
"fullName" : "screenshot_tests.tests.yandex_main_page_test.TestYandexMainPage#test_news_widget",
"historyId" : "3ef35865270ff1d210fb39b9ab2432e0",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"description" : "Test for news widget.",
"descriptionHtml" : "<p>Test for news widget.</p>\n",
"status" : "failed",
"statusMessage" : "AssertionError: «Хэдер с новостями» отличается на страницах:\nhttps://yandex.ru/\nи\nhttps://yandex.ru/",
"statusTrace" : "self = <yandex_main_page_test.TestYandexMainPage object at 0x103a6d2b0>\n\n def test_news_widget(self):\n \"\"\"Test for news widget.\"\"\"\n page = self.get_page(YandexMainPage)\n> self.check_by_screenshot(page.news_header)\n\nscreenshot_tests/tests/yandex_main_page_test.py:12: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <yandex_main_page_test.TestYandexMainPage object at 0x103a6d2b0>\nelement = <screenshot_tests.page_objects.custom_web_element.CustomWebElement object at 0x103ab4710>\nargs = (), kwargs = {}, diff = 435\nsaved_url = ParseResult(scheme='https', netloc='yandex.ru', path='/', params='', query='', fragment='')\nprod_url = ParseResult(scheme='https', netloc='yandex.ru', path='/', params='', query='', fragment='')\ninfo = '«Хэдер с новостями»'\n\n def check_by_screenshot(self, element: CustomWebElement, *args, **kwargs):\n diff, saved_url, prod_url = self._get_diff(element, *args, **kwargs)\n info = element.description\n> assert diff == 0, f\"{info} отличается на страницах:\\n{saved_url.geturl()}\\nи\\n{prod_url.geturl()}\"\nE AssertionError: «Хэдер с новостями» отличается на страницах:\nE https://yandex.ru/\nE и\nE https://yandex.ru/\n\nscreenshot_tests/utils/screenshots.py:143: AssertionError",
"flaky" : false,
"beforeStages" : [ {
"name" : "_verify_url",
"time" : {
"start" : 1569176221097,
"stop" : 1569176221097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "screenshot_prepare",
"time" : {
"start" : 1569176221097,
"stop" : 1569176221097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "driver",
"time" : {
"start" : 1569176221097,
"stop" : 1569176222535,
"duration" : 1438
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "set_driver",
"time" : {
"start" : 1569176222536,
"stop" : 1569176222536,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "base_url",
"time" : {
"start" : 1569176221096,
"stop" : 1569176221096,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "configure",
"time" : {
"start" : 1569176221097,
"stop" : 1569176221097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
} ],
"testStage" : {
"description" : "Test for news widget.",
"status" : "failed",
"statusMessage" : "AssertionError: «Хэдер с новостями» отличается на страницах:\nhttps://yandex.ru/\nи\nhttps://yandex.ru/",
"statusTrace" : "self = <yandex_main_page_test.TestYandexMainPage object at 0x103a6d2b0>\n\n def test_news_widget(self):\n \"\"\"Test for news widget.\"\"\"\n page = self.get_page(YandexMainPage)\n> self.check_by_screenshot(page.news_header)\n\nscreenshot_tests/tests/yandex_main_page_test.py:12: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <yandex_main_page_test.TestYandexMainPage object at 0x103a6d2b0>\nelement = <screenshot_tests.page_objects.custom_web_element.CustomWebElement object at 0x103ab4710>\nargs = (), kwargs = {}, diff = 435\nsaved_url = ParseResult(scheme='https', netloc='yandex.ru', path='/', params='', query='', fragment='')\nprod_url = ParseResult(scheme='https', netloc='yandex.ru', path='/', params='', query='', fragment='')\ninfo = '«Хэдер с новостями»'\n\n def check_by_screenshot(self, element: CustomWebElement, *args, **kwargs):\n diff, saved_url, prod_url = self._get_diff(element, *args, **kwargs)\n info = element.description\n> assert diff == 0, f\"{info} отличается на страницах:\\n{saved_url.geturl()}\\nи\\n{prod_url.geturl()}\"\nE AssertionError: «Хэдер с новостями» отличается на страницах:\nE https://yandex.ru/\nE и\nE https://yandex.ru/\n\nscreenshot_tests/utils/screenshots.py:143: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "15b144bb82e16a13",
"name" : "diff",
"source" : "15b144bb82e16a13.png",
"type" : "image/png",
"size" : 63598
}, {
"uid" : "8f9801e50746a9d2",
"name" : "actual",
"source" : "8f9801e50746a9d2.png",
"type" : "image/png",
"size" : 63036
}, {
"uid" : "ae0890108418dd6e",
"name" : "expected",
"source" : "ae0890108418dd6e.png",
"type" : "image/png",
"size" : 63550
}, {
"uid" : "d77bd5a097581fae",
"name" : "log",
"source" : "d77bd5a097581fae.txt",
"type" : "text/plain",
"size" : 3118
} ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 4,
"shouldDisplayMessage" : true,
"hasContent" : true
},
"afterStages" : [ {
"name" : "driver::0",
"time" : {
"start" : 1569176250196,
"stop" : 1569176250287,
"duration" : 91
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "7c5f405b92682e2f",
"name" : "last url",
"source" : "7c5f405b92682e2f.uri",
"type" : "text/uri-list",
"size" : 18
} ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"hasContent" : true
} ],
"labels" : [ {
"name" : "testType",
"value" : "screenshotDiff"
}, {
"name" : "parentSuite",
"value" : "screenshot_tests.tests"
}, {
"name" : "suite",
"value" : "yandex_main_page_test"
}, {
"name" : "subSuite",
"value" : "TestYandexMainPage"
}, {
"name" : "host",
"value" : "macbook-pro"
}, {
"name" : "thread",
"value" : "53352-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "screenshot_tests.tests.yandex_main_page_test"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "35bf2eac0f3b5d9d.json",
"parameterValues" : [ ]
}
@@ -0,0 +1,253 @@
{
"uid" : "ff3cf8e351b44c24",
"name" : "test_search_field",
"fullName" : "screenshot_tests.tests.yandex_main_page_test.TestYandexMainPage#test_search_field",
"historyId" : "1c6180a6a50469c5cd152002213dbd36",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"status" : "failed",
"statusMessage" : "AssertionError: «Поисковый блок» отличается на страницах:\nhttps://yandex.ru/\nи\nhttps://yandex.ru/",
"statusTrace" : "self = <yandex_main_page_test.TestYandexMainPage object at 0x10cb5ccc0>\n\n def test_search_field(self):\n words = [\"foo\", \"bar\", \"lol\", \"kek\", \"cheburek\", \"otus\", \"yandex\", \"google\"]\n page = self.get_page(YandexMainPage)\n \n def action():\n page.search_input.send_keys(random.choice(words))\n \n> self.check_by_screenshot(page.search_field, action)\n\nscreenshot_tests/tests/yandex_main_page_test.py:21: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <yandex_main_page_test.TestYandexMainPage object at 0x10cb5ccc0>\nelement = <screenshot_tests.page_objects.custom_web_element.CustomWebElement object at 0x10cb875c0>\nargs = (<function TestYandexMainPage.test_search_field.<locals>.action at 0x10cb717b8>,)\nkwargs = {}, diff = 16\nsaved_url = ParseResult(scheme='https', netloc='yandex.ru', path='/', params='', query='', fragment='')\nprod_url = ParseResult(scheme='https', netloc='yandex.ru', path='/', params='', query='', fragment='')\ninfo = '«Поисковый блок»'\n\n def check_by_screenshot(self, element: CustomWebElement, *args, **kwargs):\n diff, saved_url, prod_url = self._get_diff(element, *args, **kwargs)\n info = element.description\n> assert diff == 0, f\"{info} отличается на страницах:\\n{saved_url.geturl()}\\nи\\n{prod_url.geturl()}\"\nE AssertionError: «Поисковый блок» отличается на страницах:\nE https://yandex.ru/\nE и\nE https://yandex.ru/\n\nscreenshot_tests/utils/screenshots.py:143: AssertionError",
"flaky" : false,
"beforeStages" : [ {
"name" : "set_driver",
"time" : {
"start" : 1569176221588,
"stop" : 1569176221588,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "base_url",
"time" : {
"start" : 1569176221097,
"stop" : 1569176221097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "configure",
"time" : {
"start" : 1569176221097,
"stop" : 1569176221098,
"duration" : 1
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "driver",
"time" : {
"start" : 1569176221098,
"stop" : 1569176221588,
"duration" : 490
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "screenshot_prepare",
"time" : {
"start" : 1569176221098,
"stop" : 1569176221098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
}, {
"name" : "_verify_url",
"time" : {
"start" : 1569176221097,
"stop" : 1569176221097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: «Поисковый блок» отличается на страницах:\nhttps://yandex.ru/\nи\nhttps://yandex.ru/",
"statusTrace" : "self = <yandex_main_page_test.TestYandexMainPage object at 0x10cb5ccc0>\n\n def test_search_field(self):\n words = [\"foo\", \"bar\", \"lol\", \"kek\", \"cheburek\", \"otus\", \"yandex\", \"google\"]\n page = self.get_page(YandexMainPage)\n \n def action():\n page.search_input.send_keys(random.choice(words))\n \n> self.check_by_screenshot(page.search_field, action)\n\nscreenshot_tests/tests/yandex_main_page_test.py:21: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <yandex_main_page_test.TestYandexMainPage object at 0x10cb5ccc0>\nelement = <screenshot_tests.page_objects.custom_web_element.CustomWebElement object at 0x10cb875c0>\nargs = (<function TestYandexMainPage.test_search_field.<locals>.action at 0x10cb717b8>,)\nkwargs = {}, diff = 16\nsaved_url = ParseResult(scheme='https', netloc='yandex.ru', path='/', params='', query='', fragment='')\nprod_url = ParseResult(scheme='https', netloc='yandex.ru', path='/', params='', query='', fragment='')\ninfo = '«Поисковый блок»'\n\n def check_by_screenshot(self, element: CustomWebElement, *args, **kwargs):\n diff, saved_url, prod_url = self._get_diff(element, *args, **kwargs)\n info = element.description\n> assert diff == 0, f\"{info} отличается на страницах:\\n{saved_url.geturl()}\\nи\\n{prod_url.geturl()}\"\nE AssertionError: «Поисковый блок» отличается на страницах:\nE https://yandex.ru/\nE и\nE https://yandex.ru/\n\nscreenshot_tests/utils/screenshots.py:143: AssertionError",
"steps" : [ {
"name" : "Send text ['lol'] to «Поисковый инпут»",
"time" : {
"start" : 1569176223631,
"stop" : 1569176223862,
"duration" : 231
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ {
"name" : "locator_type",
"value" : "'css selector'"
}, {
"name" : "locator",
"value" : "'.input__control'"
} ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : true
}, {
"name" : "Send text ['cheburek'] to «Поисковый инпут»",
"time" : {
"start" : 1569176235178,
"stop" : 1569176235397,
"duration" : 219
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ {
"name" : "locator_type",
"value" : "'css selector'"
}, {
"name" : "locator",
"value" : "'.input__control'"
} ],
"stepsCount" : 0,
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"hasContent" : true
} ],
"attachments" : [ {
"uid" : "d807dd446712ec34",
"name" : "diff",
"source" : "d807dd446712ec34.png",
"type" : "image/png",
"size" : 5806
}, {
"uid" : "43262d127c532fc2",
"name" : "actual",
"source" : "43262d127c532fc2.png",
"type" : "image/png",
"size" : 5602
}, {
"uid" : "e4728e62a9273013",
"name" : "expected",
"source" : "e4728e62a9273013.png",
"type" : "image/png",
"size" : 5814
}, {
"uid" : "6f4fd4816dedd724",
"name" : "log",
"source" : "6f4fd4816dedd724.txt",
"type" : "text/plain",
"size" : 2838
} ],
"parameters" : [ ],
"stepsCount" : 2,
"attachmentsCount" : 4,
"shouldDisplayMessage" : true,
"hasContent" : true
},
"afterStages" : [ {
"name" : "driver::0",
"time" : {
"start" : 1569176247715,
"stop" : 1569176247818,
"duration" : 103
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "f764d0c1f0c002e8",
"name" : "last url",
"source" : "f764d0c1f0c002e8.uri",
"type" : "text/uri-list",
"size" : 18
} ],
"parameters" : [ ],
"stepsCount" : 0,
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"hasContent" : true
} ],
"labels" : [ {
"name" : "testType",
"value" : "screenshotDiff"
}, {
"name" : "parentSuite",
"value" : "screenshot_tests.tests"
}, {
"name" : "suite",
"value" : "yandex_main_page_test"
}, {
"name" : "subSuite",
"value" : "TestYandexMainPage"
}, {
"name" : "host",
"value" : "macbook-pro"
}, {
"name" : "thread",
"value" : "53353-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "screenshot_tests.tests.yandex_main_page_test"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "ff3cf8e351b44c24.json",
"parameterValues" : [ ]
}
+41
View File
@@ -0,0 +1,41 @@
{
"uid" : "ab17fc5a4eb3bca4b216b548c7f9fcbc",
"name" : "timeline",
"children" : [ {
"name" : "macbook-pro",
"children" : [ {
"name" : "53353-MainThread",
"children" : [ {
"name" : "test_search_field",
"uid" : "ff3cf8e351b44c24",
"parentUid" : "4dc7c33bb080a46cee81e32def5d44d1",
"status" : "failed",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"flaky" : false,
"parameters" : [ ]
} ],
"uid" : "4dc7c33bb080a46cee81e32def5d44d1"
}, {
"name" : "53352-MainThread",
"children" : [ {
"name" : "test_news_widget",
"uid" : "35bf2eac0f3b5d9d",
"parentUid" : "49e92ccdd5930a6380d1611838fa2485",
"status" : "failed",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"flaky" : false,
"parameters" : [ ]
} ],
"uid" : "49e92ccdd5930a6380d1611838fa2485"
} ],
"uid" : "45427d043511ae68e4401efdf1d10cf3"
} ]
}
+12
View File
@@ -0,0 +1,12 @@
launch_status failed=2 1569176258000000000
launch_status broken=0 1569176258000000000
launch_status passed=0 1569176258000000000
launch_status skipped=0 1569176258000000000
launch_status unknown=0 1569176258000000000
launch_time duration=28529 1569176258000000000
launch_time min_duration=25996 1569176258000000000
launch_time max_duration=27582 1569176258000000000
launch_time sum_duration=53578 1569176258000000000
launch_problems product_defects=2 1569176258000000000
launch_retries retries=0 1569176258000000000
launch_retries run=2 1569176258000000000
+10
View File
@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Allure Report summary mail</title>
</head>
<body>
Mail body
</body>
</html>
+12
View File
@@ -0,0 +1,12 @@
launch_status_failed 2
launch_status_broken 0
launch_status_passed 0
launch_status_skipped 0
launch_status_unknown 0
launch_time_duration 28529
launch_time_min_duration 25996
launch_time_max_duration 27582
launch_time_sum_duration 53578
launch_problems_product_defects 2
launch_retries_retries 0
launch_retries_run 2
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,5 @@
[ {
"data" : {
"Product defects" : 2
}
} ]
@@ -0,0 +1,5 @@
[ {
"data" : {
"duration" : 28529
}
} ]
+10
View File
@@ -0,0 +1,10 @@
[ {
"data" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 2
}
} ]
+42
View File
@@ -0,0 +1,42 @@
{
"3ef35865270ff1d210fb39b9ab2432e0" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "35bf2eac0f3b5d9d",
"status" : "failed",
"statusDetails" : "AssertionError: «Хэдер с новостями» отличается на страницах:\nhttps://yandex.ru/\nи\nhttps://yandex.ru/",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
}
} ]
},
"1c6180a6a50469c5cd152002213dbd36" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "ff3cf8e351b44c24",
"status" : "failed",
"statusDetails" : "AssertionError: «Поисковый блок» отличается на страницах:\nhttps://yandex.ru/\nи\nhttps://yandex.ru/",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
}
} ]
}
}
+6
View File
@@ -0,0 +1,6 @@
[ {
"data" : {
"run" : 2,
"retry" : 0
}
} ]
+23
View File
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta charset="utf-8">
<title>Allure Report</title>
<link rel="favicon" href="favicon.ico?v=2">
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="plugins/screen-diff/styles.css">
</head>
<body>
<div id="alert"></div>
<div id="content">
<span class="spinner">
<span class="spinner__circle"></span>
</span>
</div>
<div id="popup"></div>
<script src="app.js"></script>
<script src="plugins/behaviors/index.js"></script>
<script src="plugins/packages/index.js"></script>
<script src="plugins/screen-diff/index.js"></script>
</body>
</html>
+108
View File
@@ -0,0 +1,108 @@
'use strict';
allure.api.addTranslation('en', {
tab: {
behaviors: {
name: 'Behaviors'
}
},
widget: {
behaviors: {
name: 'Features by stories',
showAll: 'show all'
}
}
});
allure.api.addTranslation('ru', {
tab: {
behaviors: {
name: 'Функциональность'
}
},
widget: {
behaviors: {
name: 'Функциональность',
showAll: 'показать все'
}
}
});
allure.api.addTranslation('zh', {
tab: {
behaviors: {
name: '功能'
}
},
widget: {
behaviors: {
name: '特性场景',
showAll: '显示所有'
}
}
});
allure.api.addTranslation('de', {
tab: {
behaviors: {
name: 'Verhalten'
}
},
widget: {
behaviors: {
name: 'Features nach Stories',
showAll: 'Zeige alle'
}
}
});
allure.api.addTranslation('he', {
tab: {
behaviors: {
name: 'התנהגויות'
}
},
widget: {
behaviors: {
name: 'תכונות לפי סיפורי משתמש',
showAll: 'הצג הכול'
}
}
});
allure.api.addTranslation('br', {
tab: {
behaviors: {
name: 'Comportamentos'
}
},
widget: {
behaviors: {
name: 'Funcionalidades por história',
showAll: 'Mostrar tudo'
}
}
});
allure.api.addTab('behaviors', {
title: 'tab.behaviors.name', icon: 'fa fa-list',
route: 'behaviors(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)',
onEnter: (function (testGroup, testResult, testResultTab) {
return new allure.components.TreeLayout({
testGroup: testGroup,
testResult: testResult,
testResultTab: testResultTab,
tabName: 'tab.behaviors.name',
baseUrl: 'behaviors',
url: 'data/behaviors.json',
csvUrl: 'data/behaviors.csv'
});
})
});
allure.api.addWidget('widgets', 'behaviors', allure.components.WidgetStatusView.extend({
rowTag: 'a',
title: 'widget.behaviors.name',
baseUrl: 'behaviors',
showLinks: true
}));
+64
View File
@@ -0,0 +1,64 @@
'use strict';
allure.api.addTranslation('en', {
tab: {
packages: {
name: 'Packages'
}
}
});
allure.api.addTranslation('ru', {
tab: {
packages: {
name: 'Пакеты'
}
}
});
allure.api.addTranslation('zh', {
tab: {
packages: {
name: '包'
}
}
});
allure.api.addTranslation('de', {
tab: {
packages: {
name: 'Pakete'
}
}
});
allure.api.addTranslation('he', {
tab: {
packages: {
name: 'חבילות'
}
}
});
allure.api.addTranslation('br', {
tab: {
packages: {
name: 'Pacotes'
}
}
});
allure.api.addTab('packages', {
title: 'tab.packages.name', icon: 'fa fa-align-left',
route: 'packages(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)',
onEnter: (function (testGroup, testResult, testResultTab) {
return new allure.components.TreeLayout({
testGroup: testGroup,
testResult: testResult,
testResultTab: testResultTab,
tabName: 'tab.packages.name',
baseUrl: 'packages',
url: 'data/packages.json'
});
})
});
@@ -0,0 +1,97 @@
(function () {
var settings = allure.getPluginSettings('screen-diff', {diffType: 'diff'});
function renderImage(src) {
return '<div class="screen-diff__container">' +
'<img class="screen-diff__image" src="data/attachments/' + src + '">' +
'</div>';
}
function renderDiffContent(type, data) {
function findImage(name) {
if (data.testStage && data.testStage.attachments) {
return data.testStage.attachments.filter(function (attachment) {
return attachment.name === name;
})[0];
}
return null;
}
var diffImage = findImage('diff');
var actualImage = findImage('actual');
var expectedImage = findImage('expected');
if (!diffImage && !actualImage && !expectedImage) {
return '<span>Diff, actual and expected image have not been provided.</span>';
}
if (type === 'diff') {
if (!diffImage) {
return renderImage(actualImage.source);
}
return renderImage(diffImage.source);
}
if (type === 'overlay') {
return '<div class="screen-diff__overlay screen-diff__container">' +
'<img class="screen-diff__image" src="data/attachments/' + expectedImage.source + '">' +
'<div class="screen-diff__image-over">' +
'<img class="screen-diff__image" src="data/attachments/' + actualImage.source + '">' +
'</div>' +
'</div>';
}
}
var ScreenDiffView = Backbone.Marionette.View.extend({
className: 'pane__section',
events: {
'click [name="screen-diff-type"]': 'onDiffTypeChange',
'mousemove .screen-diff__overlay': 'onOverlayMove'
},
templateContext: function () {
return {
diffType: settings.get('diffType')
}
},
template: function (data) {
var testType = data.labels.filter(function (label) {
return label.name === 'testType'
})[0];
if (!testType || testType.value !== 'screenshotDiff') {
return '';
}
return '<h3 class="pane__section-title">Screen Diff</h3>' +
'<div class="screen-diff__content">' +
'<div class="screen-diff__switchers">' +
'<label><input type="radio" name="screen-diff-type" value="diff"> Show diff</label>' +
'<label><input type="radio" name="screen-diff-type" value="overlay"> Show overlay</label>' +
'</div>' +
renderDiffContent(data.diffType, data) +
'</div>';
},
adjustImageSize: function (event) {
var overImage = this.$(event.target);
overImage.width(overImage.width());
},
onRender: function () {
const diffType = settings.get('diffType');
this.$('[name="screen-diff-type"][value="' + diffType + '"]').prop('checked', true);
if (diffType === 'overlay') {
this.$('.screen-diff__image-over img').on('load', this.adjustImageSize.bind(this));
}
},
onOverlayMove: function (event) {
var pageX = event.pageX;
var containerScroll = this.$('.screen-diff__container').scrollLeft();
var elementX = event.currentTarget.getBoundingClientRect().left;
var delta = pageX - elementX + containerScroll;
this.$('.screen-diff__image-over').width(delta);
},
onDiffTypeChange: function (event) {
settings.save('diffType', event.target.value);
this.render();
}
});
allure.api.addTestResultBlock(ScreenDiffView, {position: 'before'});
})();
@@ -0,0 +1,26 @@
.screen-diff__switchers {
margin-bottom: 1em;
}
.screen-diff__switchers label + label {
margin-left: 1em;
}
.screen-diff__overlay {
position: relative;
cursor: col-resize;
}
.screen-diff__container {
overflow-x: auto;
}
.screen-diff__image-over {
top: 0;
left: 0;
bottom: 0;
background: #fff;
position: absolute;
overflow: hidden;
box-shadow: 2px 0 1px -1px #aaa;
}
File diff suppressed because one or more lines are too long
+4
View File
@@ -0,0 +1,4 @@
{
"total" : 2,
"items" : [ ]
}
@@ -0,0 +1,5 @@
[ {
"data" : {
"Product defects" : 2
}
} ]
+15
View File
@@ -0,0 +1,15 @@
{
"total" : 1,
"items" : [ {
"uid" : "8fb3a91ba5aaf9de24cc8a92edc82b5d",
"name" : "Product defects",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 2
}
} ]
}
@@ -0,0 +1,5 @@
[ {
"data" : {
"duration" : 28529
}
} ]
+21
View File
@@ -0,0 +1,21 @@
[ {
"uid" : "ff3cf8e351b44c24",
"name" : "test_search_field",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "35bf2eac0f3b5d9d",
"name" : "test_news_widget",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"status" : "failed",
"severity" : "normal"
} ]
+1
View File
@@ -0,0 +1 @@
[ ]
+1
View File
@@ -0,0 +1 @@
[ ]
+10
View File
@@ -0,0 +1,10 @@
[ {
"data" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 2
}
} ]
+1
View File
@@ -0,0 +1 @@
[ ]
+6
View File
@@ -0,0 +1,6 @@
[ {
"data" : {
"run" : 2,
"retry" : 0
}
} ]
+21
View File
@@ -0,0 +1,21 @@
[ {
"uid" : "35bf2eac0f3b5d9d",
"name" : "test_news_widget",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "ff3cf8e351b44c24",
"name" : "test_search_field",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"status" : "failed",
"severity" : "normal"
} ]
+21
View File
@@ -0,0 +1,21 @@
[ {
"uid" : "ff3cf8e351b44c24",
"name" : "test_search_field",
"time" : {
"start" : 1569176221591,
"stop" : 1569176247587,
"duration" : 25996
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "35bf2eac0f3b5d9d",
"name" : "test_news_widget",
"time" : {
"start" : 1569176222538,
"stop" : 1569176250120,
"duration" : 27582
},
"status" : "failed",
"severity" : "normal"
} ]
+15
View File
@@ -0,0 +1,15 @@
{
"total" : 1,
"items" : [ {
"uid" : "24b6faeef3ea7966bb42e6050a32e636",
"name" : "screenshot_tests.tests",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 2
}
} ]
}
+20
View File
@@ -0,0 +1,20 @@
{
"reportName" : "Allure Report",
"testRuns" : [ ],
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 2
},
"time" : {
"start" : 1569176221591,
"stop" : 1569176250120,
"duration" : 28529,
"minDuration" : 25996,
"maxDuration" : 27582,
"sumDuration" : 53578
}
}