diff --git a/output/allure-results/05af4125-b7dc-4212-9f24-1eed63766be4-attachment.png b/output/allure-results/05af4125-b7dc-4212-9f24-1eed63766be4-attachment.png new file mode 100644 index 0000000..d2ef2d6 Binary files /dev/null and b/output/allure-results/05af4125-b7dc-4212-9f24-1eed63766be4-attachment.png differ diff --git a/output/allure-results/0e753431-844c-4f55-be54-e8c01a379f8b-attachment.png b/output/allure-results/0e753431-844c-4f55-be54-e8c01a379f8b-attachment.png new file mode 100644 index 0000000..b5e3dcb Binary files /dev/null and b/output/allure-results/0e753431-844c-4f55-be54-e8c01a379f8b-attachment.png differ diff --git a/output/allure-results/197c0fa6-c60f-4722-9f6b-dc771b8a3f90-container.json b/output/allure-results/197c0fa6-c60f-4722-9f6b-dc771b8a3f90-container.json new file mode 100644 index 0000000..2349e84 --- /dev/null +++ b/output/allure-results/197c0fa6-c60f-4722-9f6b-dc771b8a3f90-container.json @@ -0,0 +1 @@ +{"uuid": "4cb54938-9a9f-41a4-9d2b-fcf2c80f57f0", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "ensure_admin_login", "status": "passed", "start": 1788332227965, "stop": 1788332227965}], "afters": [{"name": "ensure_admin_login::", "start": 1788332324448}], "start": 1788332227965, "stop": 1788332324448} \ No newline at end of file diff --git a/output/allure-results/1ad1d6b2-8492-4217-95e6-5e4f883ee802-container.json b/output/allure-results/1ad1d6b2-8492-4217-95e6-5e4f883ee802-container.json new file mode 100644 index 0000000..508827f --- /dev/null +++ b/output/allure-results/1ad1d6b2-8492-4217-95e6-5e4f883ee802-container.json @@ -0,0 +1 @@ +{"uuid": "0a313280-5f95-433f-b1cc-275234bd8b81", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "admin_page", "status": "passed", "start": 1788332223071, "stop": 1788332223607}], "afters": [{"name": "admin_page::1", "status": "passed", "start": 1788332324739, "stop": 1788332325315}, {"name": "admin_page::", "start": 1788332325315}], "start": 1788332223071, "stop": 1788332325315} \ No newline at end of file diff --git a/output/allure-results/2136c4de-d7a5-4a44-9a08-9c94c6863390-attachment.png b/output/allure-results/2136c4de-d7a5-4a44-9a08-9c94c6863390-attachment.png deleted file mode 100644 index e895a32..0000000 Binary files a/output/allure-results/2136c4de-d7a5-4a44-9a08-9c94c6863390-attachment.png and /dev/null differ diff --git a/output/allure-results/225f8797-6de6-4cf2-bd7e-65da1da01032-attachment.png b/output/allure-results/225f8797-6de6-4cf2-bd7e-65da1da01032-attachment.png new file mode 100644 index 0000000..cf55073 Binary files /dev/null and b/output/allure-results/225f8797-6de6-4cf2-bd7e-65da1da01032-attachment.png differ diff --git a/output/allure-results/2ea53d00-1b0f-40a1-8c6e-b558e1688621-container.json b/output/allure-results/2ea53d00-1b0f-40a1-8c6e-b558e1688621-container.json new file mode 100644 index 0000000..0f17359 --- /dev/null +++ b/output/allure-results/2ea53d00-1b0f-40a1-8c6e-b558e1688621-container.json @@ -0,0 +1 @@ +{"uuid": "49e789da-657e-4e64-bc84-9dd7894bde56", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "cross_end_context", "status": "passed", "start": 1788332227965, "stop": 1788332227965}], "afters": [{"name": "cross_end_context::", "start": 1788332324447}], "start": 1788332227965, "stop": 1788332324447} \ No newline at end of file diff --git a/output/allure-results/4390870e-7bec-4dcb-aa5f-8601c027a9bd-attachment.png b/output/allure-results/4390870e-7bec-4dcb-aa5f-8601c027a9bd-attachment.png deleted file mode 100644 index 6da3e5a..0000000 Binary files a/output/allure-results/4390870e-7bec-4dcb-aa5f-8601c027a9bd-attachment.png and /dev/null differ diff --git a/output/allure-results/4a101b35-dce6-41d8-855d-5bb1bbe31b31-container.json b/output/allure-results/4a101b35-dce6-41d8-855d-5bb1bbe31b31-container.json deleted file mode 100644 index 954ae73..0000000 --- a/output/allure-results/4a101b35-dce6-41d8-855d-5bb1bbe31b31-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "a795e475-9223-4625-b58b-5b7c8d62645c", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "admin_page", "status": "passed", "start": 1788321424291, "stop": 1788321424828}], "afters": [{"name": "admin_page::1", "status": "passed", "start": 1788321535645, "stop": 1788321536233}, {"name": "admin_page::", "start": 1788321536233}], "start": 1788321424291, "stop": 1788321536233} \ No newline at end of file diff --git a/output/allure-results/52b2615e-aa37-4f78-b1ff-3635df36aec5-attachment.txt b/output/allure-results/52b2615e-aa37-4f78-b1ff-3635df36aec5-attachment.txt deleted file mode 100644 index a310a88..0000000 --- a/output/allure-results/52b2615e-aa37-4f78-b1ff-3635df36aec5-attachment.txt +++ /dev/null @@ -1,18 +0,0 @@ -2026-09-02 11:57:09 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ -2026-09-02 11:57:09 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程开始 -2026-09-02 11:57:09 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ -2026-09-02 11:57:28 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 -2026-09-02 11:57:55 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 -2026-09-02 11:58:12 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 -2026-09-02 11:58:14 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011154060147 -2026-09-02 11:58:26 [WARNING] tests.pages.admin.freight_accounting_page — 等待列表稳定超时(10000ms),继续按原逻辑执行 -2026-09-02 11:58:34 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成(车队长全额收款): RHJC040026090100011154060147 -2026-09-02 11:58:40 [INFO] tests.cross_end.test_driver_to_settlement — -> 运单审核完成: RHJC040026090100011154060147 -2026-09-02 11:58:48 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-财务打款完成: RHJC040026090100011154060147 -2026-09-02 11:58:55 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-货主打款完成: RHJC040026090100011154060147 -2026-09-02 11:58:55 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ -2026-09-02 11:58:55 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程结束! -2026-09-02 11:58:55 [INFO] tests.cross_end.test_driver_to_settlement — 运输单号: RHJC040026090100011154060147 -2026-09-02 11:58:55 [INFO] tests.cross_end.test_driver_to_settlement — 核算完成: True -2026-09-02 11:58:55 [INFO] tests.cross_end.test_driver_to_settlement — 审核完成: True -2026-09-02 11:58:55 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ diff --git a/output/allure-results/5331035c-c6b8-4109-9461-c37d9203c7cb-container.json b/output/allure-results/5331035c-c6b8-4109-9461-c37d9203c7cb-container.json deleted file mode 100644 index 4d5adfe..0000000 --- a/output/allure-results/5331035c-c6b8-4109-9461-c37d9203c7cb-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "650cbee7-06fd-441b-b443-86545e0ce1f5", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "ensure_admin_login", "status": "passed", "start": 1788321429163, "stop": 1788321429163}], "afters": [{"name": "ensure_admin_login::", "start": 1788321535356}], "start": 1788321429163, "stop": 1788321535356} \ No newline at end of file diff --git a/output/allure-results/5ca393ea-16ee-430c-950e-5bc4c7a96eaf-container.json b/output/allure-results/5ca393ea-16ee-430c-950e-5bc4c7a96eaf-container.json deleted file mode 100644 index 5e583ca..0000000 --- a/output/allure-results/5ca393ea-16ee-430c-950e-5bc4c7a96eaf-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "ca8220b0-8dbe-437f-922e-8546f1bd2fb0", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "ensure_driver_login", "status": "passed", "start": 1788321429164, "stop": 1788321429164}], "afters": [{"name": "ensure_driver_login::", "start": 1788321535354}], "start": 1788321429164, "stop": 1788321535354} \ No newline at end of file diff --git a/output/allure-results/667b9d22-79b9-41e4-bbb6-6a317b903872-attachment.png b/output/allure-results/667b9d22-79b9-41e4-bbb6-6a317b903872-attachment.png deleted file mode 100644 index b15f4ce..0000000 Binary files a/output/allure-results/667b9d22-79b9-41e4-bbb6-6a317b903872-attachment.png and /dev/null differ diff --git a/output/allure-results/687b156f-06ee-4d11-b1d6-9a08bd4c8884-attachment.png b/output/allure-results/687b156f-06ee-4d11-b1d6-9a08bd4c8884-attachment.png new file mode 100644 index 0000000..45a30ab Binary files /dev/null and b/output/allure-results/687b156f-06ee-4d11-b1d6-9a08bd4c8884-attachment.png differ diff --git a/output/allure-results/691555c1-8418-47af-b06a-15af3c074e2c-attachment.png b/output/allure-results/691555c1-8418-47af-b06a-15af3c074e2c-attachment.png new file mode 100644 index 0000000..76b20ef Binary files /dev/null and b/output/allure-results/691555c1-8418-47af-b06a-15af3c074e2c-attachment.png differ diff --git a/output/allure-results/6c56261d-6e05-4bc3-a657-bb0ed3ef1ef1-container.json b/output/allure-results/6c56261d-6e05-4bc3-a657-bb0ed3ef1ef1-container.json new file mode 100644 index 0000000..45356ef --- /dev/null +++ b/output/allure-results/6c56261d-6e05-4bc3-a657-bb0ed3ef1ef1-container.json @@ -0,0 +1 @@ +{"uuid": "36025933-5f3e-4d9c-9423-5b03c94da08f", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "app_driver", "status": "passed", "start": 1788332223607, "stop": 1788332227965}], "afters": [{"name": "app_driver::1", "status": "passed", "start": 1788332324448, "stop": 1788332324738}, {"name": "app_driver::", "start": 1788332324738}], "start": 1788332223607, "stop": 1788332324738} \ No newline at end of file diff --git a/output/allure-results/7e18f7f9-520e-47a5-8d88-9f1b1fc930a8-container.json b/output/allure-results/7e18f7f9-520e-47a5-8d88-9f1b1fc930a8-container.json deleted file mode 100644 index 77d0cca..0000000 --- a/output/allure-results/7e18f7f9-520e-47a5-8d88-9f1b1fc930a8-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "b6152fb1-1f9f-49d6-bb1d-61d9af54986b", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "config", "status": "passed", "start": 1788321424286, "stop": 1788321424291}], "afters": [{"name": "config::", "start": 1788321536237}], "start": 1788321424286, "stop": 1788321536237} \ No newline at end of file diff --git a/output/allure-results/7e1c317b-9336-4c4f-9ab5-251525944c63-container.json b/output/allure-results/7e1c317b-9336-4c4f-9ab5-251525944c63-container.json deleted file mode 100644 index ca1364a..0000000 --- a/output/allure-results/7e1c317b-9336-4c4f-9ab5-251525944c63-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "830098e6-b30e-483a-9d9e-ae2b353c2263", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "driver_android_config", "status": "passed", "start": 1788321424291, "stop": 1788321424291}], "afters": [{"name": "driver_android_config::", "start": 1788321536234}], "start": 1788321424291, "stop": 1788321536234} \ No newline at end of file diff --git a/output/allure-results/8043936b-4fda-4d03-ab91-e5f726ded831-attachment.txt b/output/allure-results/8043936b-4fda-4d03-ab91-e5f726ded831-attachment.txt new file mode 100644 index 0000000..9b4ecb2 --- /dev/null +++ b/output/allure-results/8043936b-4fda-4d03-ab91-e5f726ded831-attachment.txt @@ -0,0 +1,17 @@ +2026-09-02 14:57:07 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:57:07 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程开始 +2026-09-02 14:57:07 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:57:32 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 14:57:59 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 14:58:16 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 14:58:18 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011454100158 +2026-09-02 14:58:27 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成(车队长全额收款): RHJC040026090100011454100158 +2026-09-02 14:58:32 [INFO] tests.cross_end.test_driver_to_settlement — -> 运单审核完成: RHJC040026090100011454100158 +2026-09-02 14:58:39 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-财务打款完成: RHJC040026090100011454100158 +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-货主打款完成: RHJC040026090100011454100158 +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程结束! +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — 运输单号: RHJC040026090100011454100158 +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — 核算完成: True +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — 审核完成: True +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ diff --git a/output/allure-results/87135dc7-568d-4473-be58-98fbd07285bb-attachment.png b/output/allure-results/87135dc7-568d-4473-be58-98fbd07285bb-attachment.png new file mode 100644 index 0000000..1196916 Binary files /dev/null and b/output/allure-results/87135dc7-568d-4473-be58-98fbd07285bb-attachment.png differ diff --git a/output/allure-results/923ac6f8-7ade-41ed-9105-765729e54a59-attachment.png b/output/allure-results/923ac6f8-7ade-41ed-9105-765729e54a59-attachment.png deleted file mode 100644 index 0be9f63..0000000 Binary files a/output/allure-results/923ac6f8-7ade-41ed-9105-765729e54a59-attachment.png and /dev/null differ diff --git a/output/allure-results/92c4c35d-843d-45ec-8d83-440588afb349-container.json b/output/allure-results/92c4c35d-843d-45ec-8d83-440588afb349-container.json new file mode 100644 index 0000000..cfc9921 --- /dev/null +++ b/output/allure-results/92c4c35d-843d-45ec-8d83-440588afb349-container.json @@ -0,0 +1 @@ +{"uuid": "86e9157d-cccd-4d1d-9e32-793716c14da4", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "admin_config", "status": "passed", "start": 1788332223071, "stop": 1788332223071}], "afters": [{"name": "admin_config::", "start": 1788332325316}], "start": 1788332223071, "stop": 1788332325316} \ No newline at end of file diff --git a/output/allure-results/a66fa2d1-4074-40eb-8baf-dcc2d29e2fef-attachment.txt b/output/allure-results/9e8a26b7-1eee-47b0-92ff-0809f2c73414-attachment.txt similarity index 85% rename from output/allure-results/a66fa2d1-4074-40eb-8baf-dcc2d29e2fef-attachment.txt rename to output/allure-results/9e8a26b7-1eee-47b0-92ff-0809f2c73414-attachment.txt index 4b448ee..4d99c48 100644 --- a/output/allure-results/a66fa2d1-4074-40eb-8baf-dcc2d29e2fef-attachment.txt +++ b/output/allure-results/9e8a26b7-1eee-47b0-92ff-0809f2c73414-attachment.txt @@ -4,15 +4,14 @@ INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py: INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:215 -> 接单流程完成 INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:220 -> 装货流程完成 INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:225 -> 卸货流程完成 -INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:230 -> 运输单号: RHJC040026090100011154060147 -WARNING tests.pages.admin.freight_accounting_page:freight_accounting_page.py:79 等待列表稳定超时(10000ms),继续按原逻辑执行 -INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:243 -> 运费核算完成(车队长全额收款): RHJC040026090100011154060147 -INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:248 -> 运单审核完成: RHJC040026090100011154060147 -INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:252 -> 垫资-财务打款完成: RHJC040026090100011154060147 -INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:256 -> 垫资-货主打款完成: RHJC040026090100011154060147 +INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:230 -> 运输单号: RHJC040026090100011454100158 +INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:243 -> 运费核算完成(车队长全额收款): RHJC040026090100011454100158 +INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:248 -> 运单审核完成: RHJC040026090100011454100158 +INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:252 -> 垫资-财务打款完成: RHJC040026090100011454100158 +INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:256 -> 垫资-货主打款完成: RHJC040026090100011454100158 INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:261 ============================================================ INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:262 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程结束! -INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:263 运输单号: RHJC040026090100011154060147 +INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:263 运输单号: RHJC040026090100011454100158 INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:264 核算完成: True INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:265 审核完成: True INFO tests.cross_end.test_driver_to_settlement:test_driver_to_settlement.py:266 ============================================================ \ No newline at end of file diff --git a/output/allure-results/a32577d4-9ce4-4717-9490-a7b58edb0df4-container.json b/output/allure-results/a32577d4-9ce4-4717-9490-a7b58edb0df4-container.json new file mode 100644 index 0000000..3c33b2c --- /dev/null +++ b/output/allure-results/a32577d4-9ce4-4717-9490-a7b58edb0df4-container.json @@ -0,0 +1 @@ +{"uuid": "9109f161-2fc4-4bc6-b4ec-a46202039c1e", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "logger", "status": "passed", "start": 1788332227965, "stop": 1788332227966}], "afters": [{"name": "logger::", "start": 1788332324446}], "start": 1788332227965, "stop": 1788332324446} \ No newline at end of file diff --git a/output/allure-results/a816296e-2344-4e75-a818-e5c7a831c607-container.json b/output/allure-results/a816296e-2344-4e75-a818-e5c7a831c607-container.json new file mode 100644 index 0000000..00e44da --- /dev/null +++ b/output/allure-results/a816296e-2344-4e75-a818-e5c7a831c607-container.json @@ -0,0 +1 @@ +{"uuid": "511c644a-444f-4dbc-ac2a-9e162c753e9a", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "config", "status": "passed", "start": 1788332223066, "stop": 1788332223071}], "afters": [{"name": "config::", "start": 1788332325316}], "start": 1788332223066, "stop": 1788332325316} \ No newline at end of file diff --git a/output/allure-results/b660c2d8-dcad-401b-8dd7-baabff232b87-container.json b/output/allure-results/b660c2d8-dcad-401b-8dd7-baabff232b87-container.json deleted file mode 100644 index 493cd3a..0000000 --- a/output/allure-results/b660c2d8-dcad-401b-8dd7-baabff232b87-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "5e0ae3a3-aba3-4b67-a451-ec9f2c5ba0c4", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "app_driver", "status": "passed", "start": 1788321424828, "stop": 1788321429163}], "afters": [{"name": "app_driver::1", "status": "passed", "start": 1788321535357, "stop": 1788321535643}, {"name": "app_driver::", "start": 1788321535643}], "start": 1788321424828, "stop": 1788321535643} \ No newline at end of file diff --git a/output/allure-results/bb6e3c3d-89c5-4af2-b086-2171b4822acb-attachment.png b/output/allure-results/bb6e3c3d-89c5-4af2-b086-2171b4822acb-attachment.png deleted file mode 100644 index a6f3b43..0000000 Binary files a/output/allure-results/bb6e3c3d-89c5-4af2-b086-2171b4822acb-attachment.png and /dev/null differ diff --git a/output/allure-results/ce65b474-9c22-46af-a31e-92ee59aacb65-container.json b/output/allure-results/ce65b474-9c22-46af-a31e-92ee59aacb65-container.json new file mode 100644 index 0000000..649142e --- /dev/null +++ b/output/allure-results/ce65b474-9c22-46af-a31e-92ee59aacb65-container.json @@ -0,0 +1 @@ +{"uuid": "f79fec4c-82d0-4ed7-8b8f-96a80bfd8411", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "ensure_driver_login", "status": "passed", "start": 1788332227965, "stop": 1788332227965}], "afters": [{"name": "ensure_driver_login::", "start": 1788332324447}], "start": 1788332227965, "stop": 1788332324447} \ No newline at end of file diff --git a/output/allure-results/d03337de-9d19-49bc-952b-918c1ac494aa-result.json b/output/allure-results/d03337de-9d19-49bc-952b-918c1ac494aa-result.json deleted file mode 100644 index 30f0a47..0000000 --- a/output/allure-results/d03337de-9d19-49bc-952b-918c1ac494aa-result.json +++ /dev/null @@ -1 +0,0 @@ -{"name": "TC-D2S-002 司机APP接单到管理端核算打款-车队长全额收款流程", "status": "passed", "description": "\n 用例ID: TC-D2S-002\n 用例名称: 司机APP接单到管理端核算打款-车队长全额收款流程\n 优先级: P0\n 标签: cross_end, smoke\n\n 验证司机 APP 接单→管理端核算(车队长全额收款模式)→打款的完整跨端业务流程。\n ", "steps": [{"name": "Phase 1: 司机 APP — 接单流程", "status": "passed", "attachments": [{"name": "step_accept_order", "source": "923ac6f8-7ade-41ed-9105-765729e54a59-attachment.png", "type": "image/png"}], "start": 1788321436663, "stop": 1788321448129}, {"name": "Phase 1: 司机 APP — 装货流程", "status": "passed", "attachments": [{"name": "step_load_goods", "source": "f38afbaa-22a8-4790-b479-b91a532191b4-attachment.png", "type": "image/png"}], "start": 1788321448129, "stop": 1788321475076}, {"name": "Phase 1: 司机 APP — 卸货流程", "status": "passed", "attachments": [{"name": "step_unload_goods", "source": "ef889c88-d2d8-4d8c-b526-8f2dcc93d433-attachment.png", "type": "image/png"}], "start": 1788321475076, "stop": 1788321492274}, {"name": "Phase 1: 司机 APP — 获取运输单号", "status": "passed", "start": 1788321492274, "stop": 1788321494502}, {"name": "Phase 2: Web管理端 — 运费核算(车队长全额收款模式)", "status": "passed", "attachments": [{"name": "freight_accounting_done", "source": "bb6e3c3d-89c5-4af2-b086-2171b4822acb-attachment.png", "type": "image/png"}], "start": 1788321494502, "stop": 1788321514703}, {"name": "Phase 2: Web管理端 — 运单审核", "status": "passed", "attachments": [{"name": "waybill_audit_done", "source": "2136c4de-d7a5-4a44-9a08-9c94c6863390-attachment.png", "type": "image/png"}], "start": 1788321514703, "stop": 1788321520185}, {"name": "Phase 2: Web管理端 — 垫资-财务打款", "status": "passed", "attachments": [{"name": "finance_payment_done", "source": "667b9d22-79b9-41e4-bbb6-6a317b903872-attachment.png", "type": "image/png"}], "start": 1788321520185, "stop": 1788321528453}, {"name": "Phase 2: Web管理端 — 垫资-货主打款", "status": "passed", "attachments": [{"name": "shipper_payment_done", "source": "4390870e-7bec-4dcb-aa5f-8601c027a9bd-attachment.png", "type": "image/png"}], "start": 1788321528453, "stop": 1788321535349}], "attachments": [{"name": "log", "source": "a66fa2d1-4074-40eb-8baf-dcc2d29e2fef-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "52b2615e-aa37-4f78-b1ff-3635df36aec5-attachment.txt", "type": "text/plain"}], "start": 1788321429165, "stop": 1788321535350, "uuid": "93ca4ce1-4cbe-40aa-8b60-eea9199329f7", "historyId": "e0e0770b4cd0f6646da9121031e84047", "testCaseId": "e0e0770b4cd0f6646da9121031e84047", "fullName": "tests.cross_end.test_driver_to_settlement.TestDriverToSettlementTeamLeader#test_driver_to_settlement_team_leader_flow", "labels": [{"name": "tag", "value": "cross_end"}, {"name": "epic", "value": "运八网络货运平台"}, {"name": "story", "value": "司机APP接单到管理端核算打款-车队长全额收款流程"}, {"name": "severity", "value": "blocker"}, {"name": "tag", "value": "smoke"}, {"name": "feature", "value": "跨端 E2E — 司机接单到管理端核算打款"}, {"name": "tag", "value": "cross_end"}, {"name": "tag", "value": "p0"}, {"name": "tag", "value": "smoke"}, {"name": "parentSuite", "value": "tests.cross_end"}, {"name": "suite", "value": "test_driver_to_settlement"}, {"name": "subSuite", "value": "TestDriverToSettlementTeamLeader"}, {"name": "host", "value": "yunba-126"}, {"name": "thread", "value": "10272-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.cross_end.test_driver_to_settlement"}], "titlePath": ["tests", "cross_end", "test_driver_to_settlement.py", "TestDriverToSettlementTeamLeader"]} \ No newline at end of file diff --git a/output/allure-results/dcc848e4-6740-4fac-bc84-de7ef2bf9a29-container.json b/output/allure-results/dcc848e4-6740-4fac-bc84-de7ef2bf9a29-container.json new file mode 100644 index 0000000..06b19ef --- /dev/null +++ b/output/allure-results/dcc848e4-6740-4fac-bc84-de7ef2bf9a29-container.json @@ -0,0 +1 @@ +{"uuid": "2e7bd73e-b5d0-46e8-81b2-d084ea5ed268", "children": ["8b99a070-ca17-4487-9830-e44c6b7cbcf2"], "befores": [{"name": "driver_android_config", "status": "passed", "start": 1788332223071, "stop": 1788332223071}], "afters": [{"name": "driver_android_config::", "start": 1788332325315}], "start": 1788332223071, "stop": 1788332325315} \ No newline at end of file diff --git a/output/allure-results/dfb049f3-e8c3-4771-99da-f89ac1cbef1a-attachment.png b/output/allure-results/dfb049f3-e8c3-4771-99da-f89ac1cbef1a-attachment.png new file mode 100644 index 0000000..37ca508 Binary files /dev/null and b/output/allure-results/dfb049f3-e8c3-4771-99da-f89ac1cbef1a-attachment.png differ diff --git a/output/allure-results/e06b12ab-71b8-43ed-85f1-20e548101bd0-result.json b/output/allure-results/e06b12ab-71b8-43ed-85f1-20e548101bd0-result.json new file mode 100644 index 0000000..541d7a6 --- /dev/null +++ b/output/allure-results/e06b12ab-71b8-43ed-85f1-20e548101bd0-result.json @@ -0,0 +1 @@ +{"name": "TC-D2S-002 司机APP接单到管理端核算打款-车队长全额收款流程", "status": "passed", "description": "\n 用例ID: TC-D2S-002\n 用例名称: 司机APP接单到管理端核算打款-车队长全额收款流程\n 优先级: P0\n 标签: cross_end, smoke\n\n 验证司机 APP 接单→管理端核算(车队长全额收款模式)→打款的完整跨端业务流程。\n ", "steps": [{"name": "Phase 1: 司机 APP — 接单流程", "status": "passed", "attachments": [{"name": "step_accept_order", "source": "691555c1-8418-47af-b06a-15af3c074e2c-attachment.png", "type": "image/png"}], "start": 1788332236846, "stop": 1788332252852}, {"name": "Phase 1: 司机 APP — 装货流程", "status": "passed", "attachments": [{"name": "step_load_goods", "source": "dfb049f3-e8c3-4771-99da-f89ac1cbef1a-attachment.png", "type": "image/png"}], "start": 1788332252852, "stop": 1788332279542}, {"name": "Phase 1: 司机 APP — 卸货流程", "status": "passed", "attachments": [{"name": "step_unload_goods", "source": "0e753431-844c-4f55-be54-e8c01a379f8b-attachment.png", "type": "image/png"}], "start": 1788332279542, "stop": 1788332296688}, {"name": "Phase 1: 司机 APP — 获取运输单号", "status": "passed", "start": 1788332296688, "stop": 1788332298903}, {"name": "Phase 2: Web管理端 — 运费核算(车队长全额收款模式)", "status": "passed", "attachments": [{"name": "freight_accounting_done", "source": "87135dc7-568d-4473-be58-98fbd07285bb-attachment.png", "type": "image/png"}], "start": 1788332298903, "stop": 1788332307905}, {"name": "Phase 2: Web管理端 — 运单审核", "status": "passed", "attachments": [{"name": "waybill_audit_done", "source": "05af4125-b7dc-4212-9f24-1eed63766be4-attachment.png", "type": "image/png"}], "start": 1788332307905, "stop": 1788332312781}, {"name": "Phase 2: Web管理端 — 垫资-财务打款", "status": "passed", "attachments": [{"name": "finance_payment_done", "source": "225f8797-6de6-4cf2-bd7e-65da1da01032-attachment.png", "type": "image/png"}], "start": 1788332312781, "stop": 1788332319201}, {"name": "Phase 2: Web管理端 — 垫资-货主打款", "status": "passed", "attachments": [{"name": "shipper_payment_done", "source": "687b156f-06ee-4d11-b1d6-9a08bd4c8884-attachment.png", "type": "image/png"}], "start": 1788332319201, "stop": 1788332324445}], "attachments": [{"name": "log", "source": "9e8a26b7-1eee-47b0-92ff-0809f2c73414-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "8043936b-4fda-4d03-ab91-e5f726ded831-attachment.txt", "type": "text/plain"}], "start": 1788332227966, "stop": 1788332324446, "uuid": "8b99a070-ca17-4487-9830-e44c6b7cbcf2", "historyId": "e0e0770b4cd0f6646da9121031e84047", "testCaseId": "e0e0770b4cd0f6646da9121031e84047", "fullName": "tests.cross_end.test_driver_to_settlement.TestDriverToSettlementTeamLeader#test_driver_to_settlement_team_leader_flow", "labels": [{"name": "severity", "value": "blocker"}, {"name": "epic", "value": "运八网络货运平台"}, {"name": "tag", "value": "smoke"}, {"name": "story", "value": "司机APP接单到管理端核算打款-车队长全额收款流程"}, {"name": "tag", "value": "cross_end"}, {"name": "feature", "value": "跨端 E2E — 司机接单到管理端核算打款"}, {"name": "tag", "value": "cross_end"}, {"name": "tag", "value": "p0"}, {"name": "tag", "value": "smoke"}, {"name": "parentSuite", "value": "tests.cross_end"}, {"name": "suite", "value": "test_driver_to_settlement"}, {"name": "subSuite", "value": "TestDriverToSettlementTeamLeader"}, {"name": "host", "value": "yunba-126"}, {"name": "thread", "value": "28020-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.cross_end.test_driver_to_settlement"}], "titlePath": ["tests", "cross_end", "test_driver_to_settlement.py", "TestDriverToSettlementTeamLeader"]} \ No newline at end of file diff --git a/output/allure-results/edc42ec2-d9be-4400-bebe-2bbeb147a65c-container.json b/output/allure-results/edc42ec2-d9be-4400-bebe-2bbeb147a65c-container.json deleted file mode 100644 index bf777a6..0000000 --- a/output/allure-results/edc42ec2-d9be-4400-bebe-2bbeb147a65c-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "5a28ea91-7b91-446e-8dbc-4329f6c3e59f", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "admin_config", "status": "passed", "start": 1788321424291, "stop": 1788321424291}], "afters": [{"name": "admin_config::", "start": 1788321536236}], "start": 1788321424291, "stop": 1788321536236} \ No newline at end of file diff --git a/output/allure-results/ef889c88-d2d8-4d8c-b526-8f2dcc93d433-attachment.png b/output/allure-results/ef889c88-d2d8-4d8c-b526-8f2dcc93d433-attachment.png deleted file mode 100644 index 62ee09b..0000000 Binary files a/output/allure-results/ef889c88-d2d8-4d8c-b526-8f2dcc93d433-attachment.png and /dev/null differ diff --git a/output/allure-results/f38afbaa-22a8-4790-b479-b91a532191b4-attachment.png b/output/allure-results/f38afbaa-22a8-4790-b479-b91a532191b4-attachment.png deleted file mode 100644 index e84029c..0000000 Binary files a/output/allure-results/f38afbaa-22a8-4790-b479-b91a532191b4-attachment.png and /dev/null differ diff --git a/output/allure-results/f514312a-eab4-4a2e-bd66-f431b0e33988-container.json b/output/allure-results/f514312a-eab4-4a2e-bd66-f431b0e33988-container.json deleted file mode 100644 index d45cda3..0000000 --- a/output/allure-results/f514312a-eab4-4a2e-bd66-f431b0e33988-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "2c4b3c16-fb92-41f9-8fc0-10f6f713d79f", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "logger", "status": "passed", "start": 1788321429164, "stop": 1788321429164}], "afters": [{"name": "logger::", "start": 1788321535350}], "start": 1788321429164, "stop": 1788321535350} \ No newline at end of file diff --git a/output/allure-results/ffcb4504-7969-4825-9232-a064c0a4472a-container.json b/output/allure-results/ffcb4504-7969-4825-9232-a064c0a4472a-container.json deleted file mode 100644 index 9f1df3c..0000000 --- a/output/allure-results/ffcb4504-7969-4825-9232-a064c0a4472a-container.json +++ /dev/null @@ -1 +0,0 @@ -{"uuid": "ab303ace-713c-4c19-92fa-96a1d737fb32", "children": ["93ca4ce1-4cbe-40aa-8b60-eea9199329f7"], "befores": [{"name": "cross_end_context", "status": "passed", "start": 1788321429164, "stop": 1788321429164}], "afters": [{"name": "cross_end_context::", "start": 1788321535352}], "start": 1788321429164, "stop": 1788321535352} \ No newline at end of file diff --git a/output/app_home.xml b/output/app_home.xml new file mode 100644 index 0000000..085c647 --- /dev/null +++ b/output/app_home.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/output/logs/test_run_20260902_135642.log b/output/logs/test_run_20260902_135642.log new file mode 100644 index 0000000..7e2a528 --- /dev/null +++ b/output/logs/test_run_20260902_135642.log @@ -0,0 +1,36 @@ +2026-09-02 13:56:42 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 13:56:42 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程开始 +2026-09-02 13:56:42 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 13:57:02 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 13:57:28 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 13:57:46 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 13:57:48 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011353400148 +2026-09-02 13:58:00 [WARNING] tests.pages.admin.freight_accounting_page — 等待列表稳定超时(10000ms),继续按原逻辑执行 +2026-09-02 13:58:07 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成: RHJC040026090100011353400148 +2026-09-02 13:58:12 [INFO] tests.cross_end.test_driver_to_settlement — -> 运单审核完成: RHJC040026090100011353400148 +2026-09-02 13:58:19 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-财务打款完成: RHJC040026090100011353400148 +2026-09-02 13:58:29 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-货主打款完成: RHJC040026090100011353400148 +2026-09-02 13:58:29 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 13:58:29 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程结束! +2026-09-02 13:58:29 [INFO] tests.cross_end.test_driver_to_settlement — 运输单号: RHJC040026090100011353400148 +2026-09-02 13:58:29 [INFO] tests.cross_end.test_driver_to_settlement — 核算完成: True +2026-09-02 13:58:29 [INFO] tests.cross_end.test_driver_to_settlement — 审核完成: True +2026-09-02 13:58:29 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 13:58:35 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 13:58:35 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程开始 +2026-09-02 13:58:35 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 13:58:54 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 13:59:20 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 13:59:37 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 13:59:39 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011355320149 +2026-09-02 13:59:50 [WARNING] tests.pages.admin.freight_accounting_page — 等待列表稳定超时(10000ms),继续按原逻辑执行 +2026-09-02 13:59:58 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成(车队长全额收款): RHJC040026090100011355320149 +2026-09-02 14:00:02 [INFO] tests.cross_end.test_driver_to_settlement — -> 运单审核完成: RHJC040026090100011355320149 +2026-09-02 14:00:09 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-财务打款完成: RHJC040026090100011355320149 +2026-09-02 14:00:17 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-货主打款完成: RHJC040026090100011355320149 +2026-09-02 14:00:17 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:00:17 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程结束! +2026-09-02 14:00:17 [INFO] tests.cross_end.test_driver_to_settlement — 运输单号: RHJC040026090100011355320149 +2026-09-02 14:00:17 [INFO] tests.cross_end.test_driver_to_settlement — 核算完成: True +2026-09-02 14:00:17 [INFO] tests.cross_end.test_driver_to_settlement — 审核完成: True +2026-09-02 14:00:17 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ diff --git a/output/logs/test_run_20260902_142852.log b/output/logs/test_run_20260902_142852.log new file mode 100644 index 0000000..ff941fe --- /dev/null +++ b/output/logs/test_run_20260902_142852.log @@ -0,0 +1,17 @@ +2026-09-02 14:28:52 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:28:52 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程开始 +2026-09-02 14:28:52 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:29:16 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 14:29:41 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 14:29:58 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 14:30:00 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011425530151 +2026-09-02 14:30:08 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成: RHJC040026090100011425530151 +2026-09-02 14:30:13 [INFO] tests.cross_end.test_driver_to_settlement — -> 运单审核完成: RHJC040026090100011425530151 +2026-09-02 14:30:21 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-财务打款完成: RHJC040026090100011425530151 +2026-09-02 14:30:32 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-货主打款完成: RHJC040026090100011425530151 +2026-09-02 14:30:32 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:30:32 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程结束! +2026-09-02 14:30:32 [INFO] tests.cross_end.test_driver_to_settlement — 运输单号: RHJC040026090100011425530151 +2026-09-02 14:30:32 [INFO] tests.cross_end.test_driver_to_settlement — 核算完成: True +2026-09-02 14:30:32 [INFO] tests.cross_end.test_driver_to_settlement — 审核完成: True +2026-09-02 14:30:32 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ diff --git a/output/logs/test_run_20260902_143047.log b/output/logs/test_run_20260902_143047.log new file mode 100644 index 0000000..e83bdca --- /dev/null +++ b/output/logs/test_run_20260902_143047.log @@ -0,0 +1,8 @@ +2026-09-02 14:30:47 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:30:47 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程开始 +2026-09-02 14:30:47 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:31:07 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 14:31:32 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 14:31:50 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 14:31:52 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011427440152 +2026-09-02 14:32:01 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成(车队长全额收款): RHJC040026090100011427440152 diff --git a/output/logs/test_run_20260902_143524.log b/output/logs/test_run_20260902_143524.log new file mode 100644 index 0000000..f526db1 --- /dev/null +++ b/output/logs/test_run_20260902_143524.log @@ -0,0 +1,25 @@ +2026-09-02 14:35:24 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:35:24 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程开始 +2026-09-02 14:35:24 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:35:47 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 14:36:12 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 14:36:29 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 14:36:31 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011432240153 +2026-09-02 14:36:41 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成: RHJC040026090100011432240153 +2026-09-02 14:36:47 [INFO] tests.cross_end.test_driver_to_settlement — -> 运单审核完成: RHJC040026090100011432240153 +2026-09-02 14:36:55 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-财务打款完成: RHJC040026090100011432240153 +2026-09-02 14:37:03 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-货主打款完成: RHJC040026090100011432240153 +2026-09-02 14:37:03 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:37:03 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程结束! +2026-09-02 14:37:03 [INFO] tests.cross_end.test_driver_to_settlement — 运输单号: RHJC040026090100011432240153 +2026-09-02 14:37:03 [INFO] tests.cross_end.test_driver_to_settlement — 核算完成: True +2026-09-02 14:37:03 [INFO] tests.cross_end.test_driver_to_settlement — 审核完成: True +2026-09-02 14:37:03 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:37:08 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:37:08 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程开始 +2026-09-02 14:37:08 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:37:35 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 14:38:01 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 14:38:19 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 14:38:21 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011434130154 +2026-09-02 14:38:31 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成(车队长全额收款): RHJC040026090100011434130154 diff --git a/output/logs/test_run_20260902_145253.log b/output/logs/test_run_20260902_145253.log new file mode 100644 index 0000000..5ba29a2 --- /dev/null +++ b/output/logs/test_run_20260902_145253.log @@ -0,0 +1,7 @@ +2026-09-02 14:52:53 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:52:53 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程开始 +2026-09-02 14:52:53 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:53:18 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 14:53:44 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 14:54:02 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 14:54:04 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011449550156 diff --git a/output/logs/test_run_20260902_145506.log b/output/logs/test_run_20260902_145506.log new file mode 100644 index 0000000..67bef2e --- /dev/null +++ b/output/logs/test_run_20260902_145506.log @@ -0,0 +1,17 @@ +2026-09-02 14:55:06 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:55:06 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程开始 +2026-09-02 14:55:06 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:55:31 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 14:55:58 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 14:56:16 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 14:56:19 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011452090157 +2026-09-02 14:56:28 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成: RHJC040026090100011452090157 +2026-09-02 14:56:33 [INFO] tests.cross_end.test_driver_to_settlement — -> 运单审核完成: RHJC040026090100011452090157 +2026-09-02 14:56:41 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-财务打款完成: RHJC040026090100011452090157 +2026-09-02 14:56:48 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-货主打款完成: RHJC040026090100011452090157 +2026-09-02 14:56:48 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:56:48 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款 完整流程结束! +2026-09-02 14:56:48 [INFO] tests.cross_end.test_driver_to_settlement — 运输单号: RHJC040026090100011452090157 +2026-09-02 14:56:48 [INFO] tests.cross_end.test_driver_to_settlement — 核算完成: True +2026-09-02 14:56:48 [INFO] tests.cross_end.test_driver_to_settlement — 审核完成: True +2026-09-02 14:56:48 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ diff --git a/output/logs/test_run_20260902_145707.log b/output/logs/test_run_20260902_145707.log new file mode 100644 index 0000000..9b4ecb2 --- /dev/null +++ b/output/logs/test_run_20260902_145707.log @@ -0,0 +1,17 @@ +2026-09-02 14:57:07 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:57:07 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程开始 +2026-09-02 14:57:07 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:57:32 [INFO] tests.cross_end.test_driver_to_settlement — -> 接单流程完成 +2026-09-02 14:57:59 [INFO] tests.cross_end.test_driver_to_settlement — -> 装货流程完成 +2026-09-02 14:58:16 [INFO] tests.cross_end.test_driver_to_settlement — -> 卸货流程完成 +2026-09-02 14:58:18 [INFO] tests.cross_end.test_driver_to_settlement — -> 运输单号: RHJC040026090100011454100158 +2026-09-02 14:58:27 [INFO] tests.cross_end.test_driver_to_settlement — -> 运费核算完成(车队长全额收款): RHJC040026090100011454100158 +2026-09-02 14:58:32 [INFO] tests.cross_end.test_driver_to_settlement — -> 运单审核完成: RHJC040026090100011454100158 +2026-09-02 14:58:39 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-财务打款完成: RHJC040026090100011454100158 +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — -> 垫资-货主打款完成: RHJC040026090100011454100158 +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — 跨端 E2E: 司机APP → 管理端核算打款(车队长全额收款)完整流程结束! +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — 运输单号: RHJC040026090100011454100158 +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — 核算完成: True +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — 审核完成: True +2026-09-02 14:58:44 [INFO] tests.cross_end.test_driver_to_settlement — ============================================================ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_135702.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_135702.png new file mode 100644 index 0000000..2dbff21 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_135702.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_135854.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_135854.png new file mode 100644 index 0000000..3a4f07d Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_135854.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_142915.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_142915.png new file mode 100644 index 0000000..2465fc7 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_142915.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143106.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143106.png new file mode 100644 index 0000000..30b1115 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143106.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143546.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143546.png new file mode 100644 index 0000000..3efe0d9 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143546.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143735.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143735.png new file mode 100644 index 0000000..c0c25c2 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_143735.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145317.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145317.png new file mode 100644 index 0000000..236177c Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145317.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145531.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145531.png new file mode 100644 index 0000000..831d621 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145531.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145732.png b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145732.png new file mode 100644 index 0000000..76b20ef Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_accept_order_android_20260902_145732.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_135728.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_135728.png new file mode 100644 index 0000000..3054cee Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_135728.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_135919.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_135919.png new file mode 100644 index 0000000..2d8210f Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_135919.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_142941.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_142941.png new file mode 100644 index 0000000..8d77acc Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_142941.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143131.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143131.png new file mode 100644 index 0000000..a5179a0 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143131.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143612.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143612.png new file mode 100644 index 0000000..c386606 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143612.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143800.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143800.png new file mode 100644 index 0000000..bf0c91b Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_143800.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145344.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145344.png new file mode 100644 index 0000000..e04fb6b Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145344.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145558.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145558.png new file mode 100644 index 0000000..a93b3ac Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145558.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145758.png b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145758.png new file mode 100644 index 0000000..37ca508 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_load_goods_android_20260902_145758.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_135745.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_135745.png new file mode 100644 index 0000000..f6a9e87 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_135745.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_135936.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_135936.png new file mode 100644 index 0000000..e92621f Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_135936.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_142958.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_142958.png new file mode 100644 index 0000000..d112c95 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_142958.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143149.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143149.png new file mode 100644 index 0000000..cb9ed97 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143149.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143629.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143629.png new file mode 100644 index 0000000..0a2427b Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143629.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143818.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143818.png new file mode 100644 index 0000000..d7a9aa5 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_143818.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145401.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145401.png new file mode 100644 index 0000000..a44a846 Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145401.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145616.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145616.png new file mode 100644 index 0000000..f08728d Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145616.png differ diff --git a/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145816.png b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145816.png new file mode 100644 index 0000000..b5e3dcb Binary files /dev/null and b/output/screenshots/DriverFreightFlowPage/step_unload_goods_android_20260902_145816.png differ diff --git a/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_135819.png b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_135819.png new file mode 100644 index 0000000..a9feb43 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_135819.png differ diff --git a/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_140009.png b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_140009.png new file mode 100644 index 0000000..485b993 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_140009.png differ diff --git a/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_143020.png b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_143020.png new file mode 100644 index 0000000..fcf7557 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_143020.png differ diff --git a/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_143654.png b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_143654.png new file mode 100644 index 0000000..05962b0 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_143654.png differ diff --git a/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_145640.png b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_145640.png new file mode 100644 index 0000000..05962b0 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_145640.png differ diff --git a/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_145839.png b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_145839.png new file mode 100644 index 0000000..cf55073 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/finance_payment_done_20260902_145839.png differ diff --git a/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_135807.png b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_135807.png new file mode 100644 index 0000000..2781012 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_135807.png differ diff --git a/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_135958.png b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_135958.png new file mode 100644 index 0000000..ec391ff Binary files /dev/null and b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_135958.png differ diff --git a/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143008.png b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143008.png new file mode 100644 index 0000000..79e2a0a Binary files /dev/null and b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143008.png differ diff --git a/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143201.png b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143201.png new file mode 100644 index 0000000..f219c77 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143201.png differ diff --git a/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143641.png b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143641.png new file mode 100644 index 0000000..d8a6613 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143641.png differ diff --git a/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143831.png b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143831.png new file mode 100644 index 0000000..c1b4ea7 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_143831.png differ diff --git a/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_145628.png b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_145628.png new file mode 100644 index 0000000..69e69bd Binary files /dev/null and b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_145628.png differ diff --git a/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_145827.png b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_145827.png new file mode 100644 index 0000000..1196916 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/freight_accounting_done_20260902_145827.png differ diff --git a/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_135829.png b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_135829.png new file mode 100644 index 0000000..029a569 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_135829.png differ diff --git a/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_140017.png b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_140017.png new file mode 100644 index 0000000..029a569 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_140017.png differ diff --git a/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_143032.png b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_143032.png new file mode 100644 index 0000000..029a569 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_143032.png differ diff --git a/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_143702.png b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_143702.png new file mode 100644 index 0000000..029a569 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_143702.png differ diff --git a/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_145648.png b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_145648.png new file mode 100644 index 0000000..45a30ab Binary files /dev/null and b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_145648.png differ diff --git a/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_145844.png b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_145844.png new file mode 100644 index 0000000..45a30ab Binary files /dev/null and b/output/screenshots/FreightAccountingPage/shipper_payment_done_20260902_145844.png differ diff --git a/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_135812.png b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_135812.png new file mode 100644 index 0000000..e5ac28d Binary files /dev/null and b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_135812.png differ diff --git a/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_140002.png b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_140002.png new file mode 100644 index 0000000..d777f39 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_140002.png differ diff --git a/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_143013.png b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_143013.png new file mode 100644 index 0000000..3e5f99f Binary files /dev/null and b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_143013.png differ diff --git a/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_143647.png b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_143647.png new file mode 100644 index 0000000..e8c7a8c Binary files /dev/null and b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_143647.png differ diff --git a/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_145633.png b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_145633.png new file mode 100644 index 0000000..257ccf7 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_145633.png differ diff --git a/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_145832.png b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_145832.png new file mode 100644 index 0000000..d2ef2d6 Binary files /dev/null and b/output/screenshots/FreightAccountingPage/waybill_audit_done_20260902_145832.png differ diff --git a/output/screenshots/test_driver_to_settlement_full_flow/FAIL_admin_chromium_20260902_145411.png b/output/screenshots/test_driver_to_settlement_full_flow/FAIL_admin_chromium_20260902_145411.png new file mode 100644 index 0000000..e1acb9c Binary files /dev/null and b/output/screenshots/test_driver_to_settlement_full_flow/FAIL_admin_chromium_20260902_145411.png differ diff --git a/output/screenshots/test_driver_to_settlement_full_flow/FAIL_android_20260902_145410.png b/output/screenshots/test_driver_to_settlement_full_flow/FAIL_android_20260902_145410.png new file mode 100644 index 0000000..ab264c4 Binary files /dev/null and b/output/screenshots/test_driver_to_settlement_full_flow/FAIL_android_20260902_145410.png differ diff --git a/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_admin_chromium_20260902_143207.png b/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_admin_chromium_20260902_143207.png new file mode 100644 index 0000000..2b892ad Binary files /dev/null and b/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_admin_chromium_20260902_143207.png differ diff --git a/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_admin_chromium_20260902_143837.png b/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_admin_chromium_20260902_143837.png new file mode 100644 index 0000000..c5c0e87 Binary files /dev/null and b/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_admin_chromium_20260902_143837.png differ diff --git a/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_android_20260902_143207.png b/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_android_20260902_143207.png new file mode 100644 index 0000000..be2e6cf Binary files /dev/null and b/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_android_20260902_143207.png differ diff --git a/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_android_20260902_143836.png b/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_android_20260902_143836.png new file mode 100644 index 0000000..37a5479 Binary files /dev/null and b/output/screenshots/test_driver_to_settlement_team_leader_flow/FAIL_android_20260902_143836.png differ diff --git a/tests/core/allure_support.py b/tests/core/allure_support.py index 9060108..79c4394 100644 --- a/tests/core/allure_support.py +++ b/tests/core/allure_support.py @@ -21,6 +21,19 @@ def attach_png(path: str, name: str = "screenshot") -> None: pass # 附件失败不影响用例主流程 +def attach_text(content: str, name: str, attachment_type=None) -> None: + """把文本内容(DOM 快照/page_source 等)附加到 Allure 当前用例上。""" + if allure is None: + return + try: + allure.attach( + content, name=name, + attachment_type=attachment_type or allure.attachment_type.TEXT, + ) + except Exception: + pass # 附件失败不影响用例主流程 + + def write_environment_properties(results_dir: str, config: dict) -> None: """向 allure-results 目录写入 environment.properties(报告环境页展示)。""" if not results_dir: diff --git a/tests/core/appium_support.py b/tests/core/appium_support.py index 33762bb..be80800 100644 --- a/tests/core/appium_support.py +++ b/tests/core/appium_support.py @@ -7,7 +7,7 @@ from datetime import datetime import pytest -from tests.core.allure_support import attach_png +from tests.core.allure_support import allure, attach_png, attach_text from tests.core.paths import SCREENSHOTS_DIR @@ -210,7 +210,7 @@ def _perform_ui_login(driver, account: dict, wait) -> None: def save_failure_screenshot(driver, section_config: dict, platform: str, request) -> str | None: - """用例失败时截图(存盘 + attach Allure),返回路径;未失败返回 None。""" + """用例失败时截图 + 页面源码快照(存盘/attach Allure),返回路径;未失败返回 None。""" if not ( section_config.get("screenshot_on_failure", True) and hasattr(request.node, "rep_call") @@ -223,4 +223,10 @@ def save_failure_screenshot(driver, section_config: dict, platform: str, request path = str(scenario_dir / f"FAIL_{platform}_{ts}.png") driver.save_screenshot(path) attach_png(path, name=f"失败截图-{platform}") + # page_source 快照: 定位器失效时直接看到当时的控件层级 + try: + attach_text(driver.page_source, name=f"页面源码-{platform}", + attachment_type=allure.attachment_type.XML) + except Exception: + pass return path diff --git a/tests/core/playwright_support.py b/tests/core/playwright_support.py index c083402..ffbb0c6 100644 --- a/tests/core/playwright_support.py +++ b/tests/core/playwright_support.py @@ -13,7 +13,7 @@ from pathlib import Path import pytest -from tests.core.allure_support import attach_png +from tests.core.allure_support import allure, attach_png, attach_text from tests.core.paths import SCREENSHOTS_DIR # 本机 %LOCALAPPDATA%\ms-playwright 下 Chrome for Testing 存在 SxS 激活失败问题, @@ -86,7 +86,7 @@ def pick_available_role(storage_state_dir: Path, browser_name: str) -> str | Non def save_web_failure_screenshot(page, request, tag: str) -> str | None: - """用例失败时整页截图(存盘 + attach Allure),返回路径;未失败返回 None。 + """用例失败时整页截图 + DOM 快照(存盘/attach Allure),返回路径;未失败返回 None。 Args: page: Playwright Page @@ -102,8 +102,14 @@ def save_web_failure_screenshot(page, request, tag: str) -> str | None: try: page.screenshot(path=path, full_page=True) except Exception: - return None + pass attach_png(path, name=f"失败截图-{tag}") + # DOM 快照: 定位器失效时直接看到当时的页面结构 + try: + attach_text(page.content(), name=f"DOM快照-{tag}", + attachment_type=allure.attachment_type.HTML) + except Exception: + pass return path diff --git a/tests/pages/admin/freight_accounting_page.py b/tests/pages/admin/freight_accounting_page.py index 4078d2e..51633dd 100644 --- a/tests/pages/admin/freight_accounting_page.py +++ b/tests/pages/admin/freight_accounting_page.py @@ -265,9 +265,11 @@ class FreightAccountingPage(BasePage): if team_leader_payment: self._select_team_leader_payment() - # 核算按钮 (selector 文档 Step 4) - btn = self._modal().locator( - "form > div:nth-child(4) button:nth-child(4) span" + # 核算按钮 (文本锚点优先: 按钮名"核算"; 结构路径兜底) + modal = self._modal() + btn = self.first_matching( + modal.get_by_role("button", name="核算"), + modal.locator("form > div:nth-child(4) button:nth-child(4) span"), ).first self._retry_click_modal_btn(btn, wait_after=1500) self.screenshot("freight_accounting_done") @@ -283,12 +285,16 @@ class FreightAccountingPage(BasePage): 注意: Element UI 的 el-select-dropdown popper 在 DOM 中可能有多个残留 (旧的 hidden),需要用 nth(-1) 取最晚渲染的那个。 """ - # Step 1: 点击选择车队长下拉框 - selector_input = self.page.locator( - "#app > div > div.main-container.hasTagsView > section > div > div > div " - "> div.vxe-modal--wrapper.type--modal.is--animat.lock--view.is--mask.is--visible.is--active " - "> div > div.vxe-modal--body > div.vxe-modal--content > div > form " - "> div:nth-child(2) > div:nth-child(4) > div > div > div > div > input" + # Step 1: 点击选择车队长下拉框(表单 label 文本锚点优先,结构路径兜底) + modal = self._modal() + selector_input = self.first_matching( + modal.locator(".el-form-item:has-text('车队长') input"), + self.page.locator( + "#app > div > div.main-container.hasTagsView > section > div > div > div " + "> div.vxe-modal--wrapper.type--modal.is--animat.lock--view.is--mask.is--visible.is--active " + "> div > div.vxe-modal--body > div.vxe-modal--content > div > form " + "> div:nth-child(2) > div:nth-child(4) > div > div > div > div > input" + ), ).first self.wait_visible(selector_input, timeout_ms=5_000) selector_input.click() @@ -305,13 +311,19 @@ class FreightAccountingPage(BasePage): # Step 3: 等待收款模式 el-select 解除 disabled 后再点击 # Element UI 的 disabled 加在 el-select 外层的 div 上,不是 input 本身 # 所以需要等包含 is-disabled class 的上层 div 消失 - payment_select_wrapper = self.page.locator( - ".vxe-modal--wrapper.is--visible " - "form > div:nth-child(2) > div:nth-child(5) > div > div > div" + payment_select_wrapper = self.first_matching( + modal.locator(".el-form-item:has-text('收款模式') .el-select"), + self.page.locator( + ".vxe-modal--wrapper.is--visible " + "form > div:nth-child(2) > div:nth-child(5) > div > div > div" + ), ).first - payment_input = self.page.locator( - ".vxe-modal--wrapper.is--visible " - "form > div:nth-child(2) > div:nth-child(5) input" + payment_input = self.first_matching( + modal.locator(".el-form-item:has-text('收款模式') input"), + self.page.locator( + ".vxe-modal--wrapper.is--visible " + "form > div:nth-child(2) > div:nth-child(5) input" + ), ).first self.wait_visible(payment_input, timeout_ms=5_000) for _ in range(30): @@ -349,9 +361,11 @@ class FreightAccountingPage(BasePage): # 滚动弹窗 (selector 文档 Step 11) self._scroll_modal() - # 审核通过 (selector 文档 Step 12) - btn = self._modal().locator( - "._btns > button.el-button.el-button--primary.el-button--medium > span" + # 审核通过 (文本锚点优先: 按钮区"通过"; 结构路径兜底) + modal = self._modal() + btn = self.first_matching( + modal.locator("._btns button:has-text('通过')"), + modal.locator("._btns > button.el-button.el-button--primary.el-button--medium > span"), ).first self._retry_click_modal_btn(btn, wait_after=1500) self.screenshot("waybill_audit_done") @@ -370,36 +384,58 @@ class FreightAccountingPage(BasePage): self._click_table_action(button_index=2, order_no=order_no) self._scroll_modal() - # 勾选光大银行 (selector 文档 Step 20) + # 勾选光大银行 (label 文本锚点优先; 结构路径兜底) def _click_guangda_radio(): - return self._modal().locator( - "form > div:nth-child(9) > div > div:nth-child(2) " - "> label > span.el-radio__input > span" + return self.first_matching( + self._modal().locator("label:has-text('光大')"), + self._modal().locator( + "form > div:nth-child(9) > div > div:nth-child(2) " + "> label > span.el-radio__input > span" + ), + timeout_ms=3_000, ).first self._try_click("勾选光大银行", _click_guangda_radio) - # 勾选手机号 (selector 文档 Step 21) + # 勾选手机号 — 弹窗内有多组电话单选, 旧结构路径选中的才是业务正确项(优先保留); + # 手机号格式正则仅作兜底 def _click_phone_radio(): - return self.page.locator( - "[id^='el-collapse-content-'] > div > div:nth-child(3) " - "> label > span.el-radio__input > span" + import re as _re + + return self.first_matching( + self.page.locator( + "[id^='el-collapse-content-'] > div > div:nth-child(3) " + "> label > span.el-radio__input > span" + ), + self.page.locator( + ".el-radio__label", has_text=_re.compile(r"^1[3-9]\d{9}$") + ), + timeout_ms=3_000, ).first self._try_click("勾选手机号", _click_phone_radio) - # 获取验证码 (selector 文档 Step 22) + # 获取验证码 (按钮文本已实锤探测) def _click_get_code(): - return self._modal().locator( - "form > div.el-row > div.el-col.el-col-4 button span" + return self.first_matching( + self._modal().get_by_role("button", name="获取验证码"), + self._modal().locator( + "form > div.el-row > div.el-col.el-col-4 button span" + ), + timeout_ms=3_000, ).first self._try_click("获取验证码", _click_get_code, wait_after=500) - # 输入验证码 (selector 文档 Step 23) — 无验证码输入框时记录并跳过 + # 输入验证码 — form 直接子行中含"获取验证码"按钮的那个行里的输入框 (替代列结构路径) try: - inp = self._modal().locator( - "form > div.el-row > div.el-col.el-col-20 input" + inp = self.first_matching( + self._modal().locator( + "form > div.el-row:has(button:has-text('获取验证码')) input" + ), + self._modal().locator( + "form > div.el-row > div.el-col.el-col-20 input" + ), ).first self.wait_visible(inp) inp.clear() @@ -407,9 +443,12 @@ class FreightAccountingPage(BasePage): except Exception as e: logger.warning(f"可选操作 '输入验证码' 未完成,跳过: {type(e).__name__}") - # 确认打款 (selector 文档 Step 24) — 关键步骤, 失败必须抛出 - btn = self._modal().locator( - "form > div:nth-child(12) > div > button span" + # 确认打款 (按钮文本已实锤探测) — 关键步骤, 失败必须抛出 + btn = self.first_matching( + self._modal().get_by_role("button", name="确认打款"), + self._modal().locator( + "form > div:nth-child(12) > div > button span" + ), ).first self._retry_click_modal_btn(btn, wait_after=1500) self.screenshot("finance_payment_done") @@ -427,24 +466,35 @@ class FreightAccountingPage(BasePage): # 打款 (button_index=2, selector 文档 Step 30) self._click_table_action(button_index=2, order_no=order_no) - # 勾选光大 (selector 文档 Step 31) + # 勾选光大 (label 文本锚点优先; 结构路径兜底) def _click_guangda_label(): - return self._modal().locator( - "form > div > div:nth-child(3) > div > div > div:nth-child(3) " - "> label > span.el-radio__label" + return self.first_matching( + self._modal().locator("label:has-text('光大')"), + self._modal().locator( + "form > div > div:nth-child(3) > div > div > div:nth-child(3) " + "> label > span.el-radio__label" + ), + timeout_ms=3_000, ).first self._try_click("勾选光大", _click_guangda_label) - # 确认打款 (selector 文档 Step 31-2) — 关键步骤, 失败必须抛出 - btn = self._modal().locator("> div > div > button > span").first + # 确认打款 (按钮文本已实锤探测) — 关键步骤, 失败必须抛出 + btn = self.first_matching( + self._modal().get_by_role("button", name="确认打款"), + self._modal().locator("> div > div > button > span"), + ).first self._retry_click_modal_btn(btn, wait_after=1000) - # message-box 确认 (selector 文档 Step 32) + # message-box 确认 (文本锚点优先; 结构路径兜底) def _click_msgbox_confirm(): - return self.page.locator( - "body > div.el-message-box__wrapper .el-message-box__btns " - "> button.el-button.el-button--default.el-button--small.el-button--primary > span" + return self.first_matching( + self.page.locator(".el-message-box__btns button:has-text('确定')"), + self.page.locator( + "body > div.el-message-box__wrapper .el-message-box__btns " + "> button.el-button.el-button--default.el-button--small.el-button--primary > span" + ), + timeout_ms=3_000, ) self._try_click("message-box 确认", _click_msgbox_confirm, timeout_ms=5_000, wait_after=1500) diff --git a/tests/pages/base/web_base_page.py b/tests/pages/base/web_base_page.py index 32e5d5e..1474e88 100644 --- a/tests/pages/base/web_base_page.py +++ b/tests/pages/base/web_base_page.py @@ -10,6 +10,7 @@ Usage: self.login_btn = page.get_by_role("button", name="登录") """ +import time from datetime import datetime from typing import Optional @@ -26,6 +27,31 @@ class BasePage: self.page = page self.timeout = timeout_ms + # ── 多候选定位 ── + + def first_matching(self, *locators: Locator, timeout_ms: int = 5_000) -> Locator: + """依次尝试多个候选定位器,返回第一个实际命中的;全部落空则抛错。 + + 用于"语义文本锚点优先、结构路径兜底"的健壮定位: + 页面文案通常比 DOM 结构稳定,文案锚点命中就用它, + 结构变了还有旧路径兜底。 + """ + deadline = time.monotonic() + timeout_ms / 1000 + while True: + for loc in locators: + try: + if loc.count() > 0 and loc.first.is_visible(): + return loc + except Exception: + continue + if time.monotonic() >= deadline: + break + self.page.wait_for_timeout(200) + raise TimeoutError( + f"所有候选定位器在 {timeout_ms}ms 内均未命中 " + f"({len(locators)} 个候选)" + ) + # ── 通用等待 ── def wait_visible(self, locator: Locator, timeout_ms: Optional[int] = None) -> None: diff --git a/tests/pages/driver/freight_flow_page.py b/tests/pages/driver/freight_flow_page.py index c0b8af8..e819fe2 100644 --- a/tests/pages/driver/freight_flow_page.py +++ b/tests/pages/driver/freight_flow_page.py @@ -25,16 +25,22 @@ class DriverFreightFlowPage(AppBasePage): super().__init__(driver, platform) # ── 底部导航 ── - # 0=首页, 1=货源, 2=消息, 3=我的 - self.freight_source_tab = ( - AppiumBy.ANDROID_UIAUTOMATOR, - 'new UiSelector().resourceId("com.arpa.ynchenggangdriver:id/fixed_bottom_navigation_icon").instance(1)', + # 文本锚点优先(登录流程每轮运行都在验证 text("货源") 可用), + # 位置序号兜底(0=首页, 1=货源, 2=消息, 3=我的) + self.freight_source_tab_candidates = ( + (AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("货源")'), + (AppiumBy.ANDROID_UIAUTOMATOR, + 'new UiSelector().resourceId("com.arpa.ynchenggangdriver:id/fixed_bottom_navigation_icon").instance(1)'), ) # ── 货源单列表 ── - self.freight_order_item = ( - AppiumBy.ANDROID_UIAUTOMATOR, - 'new UiSelector().className("android.widget.RelativeLayout").instance(3)', + # 锚定 RecyclerView 第一个子项(语义: 列表第一行),全局序号兜底 + self.freight_order_item_candidates = ( + (AppiumBy.ANDROID_UIAUTOMATOR, + 'new UiSelector().resourceId("com.arpa.ynchenggangdriver:id/lRrcyclerView")' + '.childSelector(new UiSelector().className("android.widget.RelativeLayout").instance(0))'), + (AppiumBy.ANDROID_UIAUTOMATOR, + 'new UiSelector().className("android.widget.RelativeLayout").instance(3)'), ) # ── 数量 ── @@ -93,6 +99,17 @@ class DriverFreightFlowPage(AppBasePage): except Exception: logger.warning(f"可选元素 '{text}' 在 {timeout_s}s 内未出现,跳过点击") + def _tap_first_matching(self, *locators, timeout_s: float = 5.0): + """依次尝试多个候选定位器点击,第一个成功的生效;全部失败抛最后一个异常。""" + last_exc: Exception | None = None + for loc in locators: + try: + self._wait_and_click(loc, timeout_s) + return + except Exception as e: + last_exc = e + raise last_exc if last_exc else RuntimeError("无候选定位器") + def _swipe_up(self, locator=None, duration_ms: int = 800): """向上滑动。指定 locator 时在元素内滑动,否则全屏滑动。""" if locator: @@ -124,11 +141,11 @@ class DriverFreightFlowPage(AppBasePage): def open_freight_tab(self): """切换到底部导航的货源 tab。""" - self._wait_and_click(self.freight_source_tab) + self._tap_first_matching(*self.freight_source_tab_candidates) def select_freight_item(self): """选择货源单列表中的一项。""" - self._wait_and_click(self.freight_order_item) + self._tap_first_matching(*self.freight_order_item_candidates) def fill_quantity(self, quantity: str): """填写接单数量。"""