{ "numTotalTestSuites": 1, "numPassedTestSuites": 1, "numFailedTestSuites": 0, "numPendingTestSuites": 0, "numTotalTests": 58, "numPassedTests": 50, "numFailedTests": 8, "numPendingTests": 0, "numTodoTests": 0, "startTime": 1779633396424, "success": false, "testResults": [ { "assertionResults": [ { "ancestorTitles": [ "" ], "fullName": " opens wallet ledger modal from narrative coin card", "status": "passed", "title": "opens wallet ledger modal from narrative coin card", "duration": 157, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile recharge modal shows native qr code on desktop web by default", "status": "passed", "title": "profile recharge modal shows native qr code on desktop web by default", "duration": 183, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile recharge modal jumps to h5 payment on mobile web by default", "status": "passed", "title": "profile recharge modal jumps to h5 payment on mobile web by default", "duration": 203, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile recharge modal trusts per-product first bonus display after points recharge", "status": "passed", "title": "profile recharge modal trusts per-product first bonus display after points recharge", "duration": 120, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile recharge modal posts requestPayment params in mini program web-view", "status": "passed", "title": "profile recharge modal posts requestPayment params in mini program web-view", "duration": 237, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile recharge modal waits for paid confirmation before refreshing dashboard", "status": "passed", "title": "profile recharge modal waits for paid confirmation before refreshing dashboard", "duration": 1059, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile recharge modal loads wechat js sdk before mini program payment bridge", "status": "passed", "title": "profile recharge modal loads wechat js sdk before mini program payment bridge", "duration": 374, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile recharge modal releases submitting state after cancelled wechat pay result", "status": "passed", "title": "profile recharge modal releases submitting state after cancelled wechat pay result", "duration": 388, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile native qr confirmation refreshes only after server reports paid", "status": "passed", "title": "profile native qr confirmation refreshes only after server reports paid", "duration": 421, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " non-wechat profile shows reward code instead of recharge entry", "status": "failed", "title": "non-wechat profile shows reward code instead of recharge entry", "duration": 63, "failureMessages": [ "expected to be null" ], "location": { "line": 1805, "column": 5 } }, { "ancestorTitles": [ "" ], "fullName": " profile daily task shortcut opens task center and claims reward", "status": "passed", "title": "profile daily task shortcut opens task center and claims reward", "duration": 392, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile total play time card always uses hours", "status": "passed", "title": "profile total play time card always uses hours", "duration": 83, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile played works card shows count unit", "status": "passed", "title": "profile played works card shows count unit", "duration": 73, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile stats cards are centered without update timestamp", "status": "passed", "title": "profile stats cards are centered without update timestamp", "duration": 113, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " mobile profile page matches the reference layout sections", "status": "failed", "title": "mobile profile page matches the reference layout sections", "duration": 1045, "failureMessages": [ "expected \"spy\" to be called 1 times, but got 0 times\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m陶泥\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[0m儿\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mGENARRATIVE\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m搜索\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m测\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m测试玩家\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m100001\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m陶泥\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[0m儿\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mGENARRATIVE\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m陶泥\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[0m儿\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mGENARRATIVE\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m邀请好友\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m双方得 30 泥点\u001b[0m\n \u001b[36m\u001b[39m\n\u001b[36m\u001b[39m" ], "location": { "line": 37, "column": 19 } }, { "ancestorTitles": [ "" ], "fullName": " profile redeem invite shortcut sits between invite and community for fresh accounts", "status": "failed", "title": "profile redeem invite shortcut sits between invite and community for fresh accounts", "duration": 209, "failureMessages": [ "expected +0 to be truthy" ], "location": { "line": 2058, "column": 5 } }, { "ancestorTitles": [ "" ], "fullName": " profile redeem invite shortcut hides after redeemed or one day old", "status": "passed", "title": "profile redeem invite shortcut hides after redeemed or one day old", "duration": 226, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " invite query opens login modal for logged out users", "status": "passed", "title": "invite query opens login modal for logged out users", "duration": 20, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " invite query opens redeem modal directly for logged in users", "status": "passed", "title": "invite query opens redeem modal directly for logged in users", "duration": 154, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile redeem invite modal reads query invite code after login", "status": "passed", "title": "profile redeem invite modal reads query invite code after login", "duration": 71, "failureMessages": [] }, { "ancestorTitles": [ "" ], "fullName": " profile redeem invite modal submits code and hides shortcut after success", "status": "failed", "title": "profile redeem invite modal submits code and hides shortcut after success", "duration": 1054, "failureMessages": [ "Unable to find role=\"button\" and name `/填邀请码/u`\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m陶泥\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[0m儿\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mGENARRATIVE\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m陶泥\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[0m儿\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mGENARRATIVE\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m陶泥\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[0m儿\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mGENARRATIVE\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m搜索\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m测\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m测试玩家\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0m100001\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m