phoenix-actions / test-reporting Goto Github PK
View Code? Open in Web Editor NEWDisplays test results from popular testing frameworks directly in GitHub
License: MIT License
Displays test results from popular testing frameworks directly in GitHub
License: MIT License
Any way to fix this issue?
Do i need to add some special permissions?
I am trying to use runHtmlUrl
output in my workflow, however it is NOT possible since action.yaml does NOT have runHtmlUrl
being listed
Your suggestion on having separate workflows for the test and the results posting is interesting.
Do you have any suggestions how that second job (.github/workflows/test-report.yml
) can be aware of the matrix intersections that uploaded artifacts in a matrix job?
Obviously I could replicate the matrix configuration from the PR head branch (.github/workflows/ci.yml
) job, but I wonder if you have implemented anything similar and more simple than that matrix configuration replication.
Did you change any break changes? The xunit format is working with jest-junit
before: https://github.com/DTeam-Top/st2/runs/8390250789#r0
Here is the sample generated by tap-xunit
<?xml version="1.0"?>
<testsuites>
<testsuite tests="65" failures="0" errors="0" name="Default">
<testcase name="#1 _core › services › jwtService › empty rule set should filter nothing"/>
<testcase name="#2 _core › services › jwtService › only limited methods should be filered: GET"/>
<testcase name="#3 _core › services › jwtService › only target url should be filtered: GET"/>
<testcase name="#4 _core › services › jwtService › both patterns and methods in rules: GET"/>
<testcase name="#5 _core › services › jwtService › only limited methods should be filered: POST"/>
<testcase name="#6 _core › services › jwtService › only target url should be filtered: POST"/>
<testcase name="#7 _core › services › jwtService › both patterns and methods in rules: POST"/>
<testcase name="#8 _core › services › jwtService › only limited methods should be filered: PUT"/>
<testcase name="#9 _core › services › jwtService › only target url should be filtered: PUT"/>
<testcase name="#10 _core › services › jwtService › both patterns and methods in rules: PUT"/>
<testcase name="#11 _core › services › jwtService › only limited methods should be filered: DELETE"/>
<testcase name="#12 _core › services › jwtService › only target url should be filtered: DELETE"/>
<testcase name="#13 _core › services › jwtService › both patterns and methods in rules: DELETE"/>
<testcase name="#14 _core › services › jwtService › only limited methods should be filered: OPTIONS"/>
<testcase name="#15 _core › services › jwtService › only target url should be filtered: OPTIONS"/>
<testcase name="#16 _core › services › jwtService › both patterns and methods in rules: OPTIONS"/>
<testcase name="#17 _core › services › jwtService › only limited methods should be filered: HEAD"/>
<testcase name="#18 _core › services › jwtService › only target url should be filtered: HEAD"/>
<testcase name="#19 _core › services › jwtService › both patterns and methods in rules: HEAD"/>
<testcase name="#20 _core › services › jwtService › only limited methods should be filered: TRACE"/>
<testcase name="#21 _core › services › jwtService › only target url should be filtered: TRACE"/>
<testcase name="#22 _core › services › jwtService › both patterns and methods in rules: TRACE"/>
<testcase name="#23 _core › services › jwtService › only limited methods should be filered: PATCH"/>
<testcase name="#24 _core › services › jwtService › only target url should be filtered: PATCH"/>
<testcase name="#25 _core › services › jwtService › both patterns and methods in rules: PATCH"/>
<testcase name="#26 _core › services › jwtService › only limited methods should be filered: get"/>
<testcase name="#27 _core › services › jwtService › only target url should be filtered: get"/>
<testcase name="#28 _core › services › jwtService › both patterns and methods in rules: get"/>
<testcase name="#29 _core › services › jwtService › only limited methods should be filered: post"/>
<testcase name="#30 _core › services › jwtService › only target url should be filtered: post"/>
<testcase name="#31 _core › services › jwtService › both patterns and methods in rules: post"/>
<testcase name="#32 _core › services › jwtService › only limited methods should be filered: put"/>
<testcase name="#33 _core › services › jwtService › only target url should be filtered: put"/>
<testcase name="#34 _core › services › jwtService › both patterns and methods in rules: put"/>
<testcase name="#35 _core › services › jwtService › only limited methods should be filered: delete"/>
<testcase name="#36 _core › services › jwtService › only target url should be filtered: delete"/>
<testcase name="#37 _core › services › jwtService › both patterns and methods in rules: delete"/>
<testcase name="#38 _core › services › jwtService › only limited methods should be filered: options"/>
<testcase name="#39 _core › services › jwtService › only target url should be filtered: options"/>
<testcase name="#40 _core › services › jwtService › both patterns and methods in rules: options"/>
<testcase name="#41 _core › services › jwtService › only limited methods should be filered: head"/>
<testcase name="#42 _core › services › jwtService › only target url should be filtered: head"/>
<testcase name="#43 _core › services › jwtService › both patterns and methods in rules: head"/>
<testcase name="#44 _core › services › jwtService › only limited methods should be filered: trace"/>
<testcase name="#45 _core › services › jwtService › only target url should be filtered: trace"/>
<testcase name="#46 _core › services › jwtService › both patterns and methods in rules: trace"/>
<testcase name="#47 _core › services › jwtService › only limited methods should be filered: patch"/>
<testcase name="#48 _core › services › jwtService › only target url should be filtered: patch"/>
<testcase name="#49 _core › services › jwtService › both patterns and methods in rules: patch"/>
<testcase name="#50 _core › utils › common › unifyAddresses(0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D"/>
<testcase name="#51 _core › utils › common › unifyAddresses(0X3F1ECC900564B03C79716FEF5FD62A676FD9E61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D"/>
<testcase name="#52 _core › utils › common › unifyAddresses(0x3f1ecc900564b03c79716fef5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D"/>
<testcase name="#53 _core › utils › common › unifyAddresses(0x3f1ECC900564b03c79716FEF5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D"/>
<testcase name="#54 _core › utils › common › toHttpUrl should not change http based urls"/>
<testcase name="#55 _core › utils › common › toHttpUrl should change ipfs based urls"/>
<testcase name="#56 _core › utils › common › toHttpUrl should throw exception for non ipfs or http urls"/>
<testcase name="#57 _core › utils › common › sameAddresses should work"/>
<testcase name="#58 _core › utils › common › sameAddresses should not work for non-address strings"/>
<testcase name="#59 _core › utils › common › parseUnits / unitsOf should work"/>
<testcase name="#60 _core › utils › common › truncateNumber should work"/>
<testcase name="#61 _core › utils › common › truncate should not work for non-number strings"/>
<testcase name="#62 _core › utils › common › truncate should not work for invalid precision."/>
<testcase name="#63 _core › controller › route › route should work"/>
<testcase name="#64 _core › controller › route › jwtVerifier should work"/>
<testcase name="#65 controller › actions › /health should work">
<system-out>{"level":30,"time":1669120617874,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-1","req":{"method":"GET","url":"/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617876,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-2","req":{"method":"GET","url":"/protected/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617876,"pid":44781,"hostname":"fengyu-laptop-mj","msg":"Server successfully booted!"}
</system-out>
<system-out>{"level":30,"time":1669120617879,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-1","res":{"statusCode":200},"responseTime":3.396286003291607,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617879,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-2","res":{"statusCode":200},"responseTime":3.0541130006313324,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617879,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-3","req":{"method":"POST","url":"/sub/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617880,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-4","req":{"method":"POST","url":"/protected/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617880,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-4","res":{"statusCode":401},"err":{"type":"FastifyError","message":"No Authorization was found in request.headers","stack":"FastifyError: No Authorization was found in request.headers\n at lookupToken (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:241:13)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:446:15)\n at /home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:438:31\n at new Promise (<anonymous>)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:437:14)\n at Object.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/src/_core/controller/route.ts:35:44)\n at hookIterator (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:246:10)\n at next (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:174:16)\n at Object.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/awilix/lib/fastifyAwilixPlugin.js:17:5)\n at hookIterator (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:246:10)","name":"FastifyError","code":"FST_JWT_NO_AUTHORIZATION_IN_HEADER","statusCode":401},"msg":"No Authorization was found in request.headers"}
</system-out>
<system-out>{"level":30,"time":1669120617884,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-3","res":{"statusCode":201},"responseTime":0.7220579981803894,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617884,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-4","res":{"statusCode":401},"responseTime":4.603818003088236,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617885,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-5","req":{"method":"POST","url":"/protected/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617886,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-5","res":{"statusCode":401},"err":{"type":"FastifyError","message":"Authorization token is invalid: The token signature is invalid.","stack":"FastifyError: Authorization token is invalid: The token signature is invalid.\n at verify (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:481:17)\n at work (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastfall/fall.js:105:23)\n at /home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:22:12\n at getSecret (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:455:30)\n at Holder.work (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastfall/fall.js:103:23)\n at Function.fall [as waterfall] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastfall/fall.js:30:13)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:453:11)\n at /home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:438:31\n at new Promise (<anonymous>)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:437:14)","name":"FastifyError","code":"FST_JWT_AUTHORIZATION_TOKEN_INVALID","statusCode":401},"msg":"Authorization token is invalid: The token signature is invalid."}
</system-out>
<system-out>{"level":30,"time":1669120617887,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-5","res":{"statusCode":401},"responseTime":2.082396000623703,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617887,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-6","req":{"method":"POST","url":"/protected/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617887,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-6","res":{"statusCode":201},"responseTime":0.3499779999256134,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617888,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-7","req":{"method":"GET","url":"/banned-all/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617888,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-8","req":{"method":"POST","url":"/banned-all/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617888,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-9","req":{"method":"DELETE","url":"/banned-all/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617888,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-a","req":{"method":"GET","url":"/banned-all/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617888,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-b","req":{"method":"POST","url":"/banned-all/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617888,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-c","req":{"method":"DELETE","url":"/banned-all/test","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617888,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-7","res":{"statusCode":401},"err":{"type":"FastifyError","message":"No Authorization was found in request.headers","stack":"FastifyError: No Authorization was found in request.headers\n at lookupToken (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:241:13)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:446:15)\n at /home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:438:31\n at new Promise (<anonymous>)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:437:14)\n at Object.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/src/_core/controller/route.ts:35:44)\n at hookIterator (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:246:10)\n at next (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:174:16)\n at Object.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/awilix/lib/fastifyAwilixPlugin.js:17:5)\n at hookIterator (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:246:10)","name":"FastifyError","code":"FST_JWT_NO_AUTHORIZATION_IN_HEADER","statusCode":401},"msg":"No Authorization was found in request.headers"}
</system-out>
<system-out>{"level":30,"time":1669120617889,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-8","res":{"statusCode":401},"err":{"type":"FastifyError","message":"No Authorization was found in request.headers","stack":"FastifyError: No Authorization was found in request.headers\n at lookupToken (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:241:13)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:446:15)\n at /home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:438:31\n at new Promise (<anonymous>)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:437:14)\n at Object.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/src/_core/controller/route.ts:35:44)\n at hookIterator (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:246:10)\n at next (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:174:16)\n at Object.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/awilix/lib/fastifyAwilixPlugin.js:17:5)\n at hookIterator (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:246:10)","name":"FastifyError","code":"FST_JWT_NO_AUTHORIZATION_IN_HEADER","statusCode":401},"msg":"No Authorization was found in request.headers"}
</system-out>
<system-out>{"level":30,"time":1669120617889,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-9","res":{"statusCode":401},"err":{"type":"FastifyError","message":"No Authorization was found in request.headers","stack":"FastifyError: No Authorization was found in request.headers\n at lookupToken (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:241:13)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:446:15)\n at /home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:438:31\n at new Promise (<anonymous>)\n at _Request.requestVerify [as jwtVerify] (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/jwt/jwt.js:437:14)\n at Object.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/src/_core/controller/route.ts:35:44)\n at hookIterator (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:246:10)\n at next (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:174:16)\n at Object.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/@fastify/awilix/lib/fastifyAwilixPlugin.js:17:5)\n at hookIterator (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/fastify/lib/hooks.js:246:10)","name":"FastifyError","code":"FST_JWT_NO_AUTHORIZATION_IN_HEADER","statusCode":401},"msg":"No Authorization was found in request.headers"}
</system-out>
<system-out>{"level":30,"time":1669120617890,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-7","res":{"statusCode":401},"responseTime":1.2324169985949993,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617890,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-8","res":{"statusCode":401},"responseTime":1.4230160005390644,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617890,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-9","res":{"statusCode":401},"responseTime":1.6336320005357265,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617890,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-a","res":{"statusCode":200},"responseTime":1.6284230016171932,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617890,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-b","res":{"statusCode":200},"responseTime":1.4986380003392696,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617890,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-c","res":{"statusCode":200},"responseTime":1.3942120000720024,"msg":"request completed"}
</system-out>
<system-out>{"level":30,"time":1669120617892,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-1","req":{"method":"GET","url":"/health","hostname":"localhost:80","remoteAddress":"127.0.0.1"},"msg":"incoming request"}
</system-out>
<system-out>{"level":30,"time":1669120617896,"pid":44781,"hostname":"fengyu-laptop-mj","msg":"Server successfully booted!"}
</system-out>
<system-out>{"level":30,"time":1669120617896,"pid":44781,"hostname":"fengyu-laptop-mj","reqId":"req-1","res":{"statusCode":200},"responseTime":3.0050409995019436,"msg":"request completed"}
</system-out>
<system-out>{"level":50,"time":1669120623733,"pid":44781,"hostname":"fengyu-laptop-mj","from":"DbService","err":{"type":"DatabaseError","message":"syntax error at or near \")\"","stack":"error: syntax error at or near \")\"\n at Parser.parseErrorMessage (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:369:69)\n at Parser.handlePacket (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:188:21)\n at Parser.parse (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:103:30)\n at Socket.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:513:28)\n at Socket.emit (node:domain:489:12)\n at addChunk (node:internal/streams/readable:324:12)\n at readableAddChunk (node:internal/streams/readable:297:9)\n at Socket.Readable.push (node:internal/streams/readable:234:10)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","length":90,"name":"error","severity":"ERROR","code":"42601","position":"69","file":"scan.l","line":"1176","routine":"scanner_yyerror"},"msg":"executing sql: \n CREATE TABLE table1 (\n id serial,\n name \n )\n , args: [], caused: syntax error at or near \")\""}
</system-out>
<system-out>{"level":50,"time":1669120623744,"pid":44781,"hostname":"fengyu-laptop-mj","from":"DbService","err":{"type":"DatabaseError","message":"relation \"table2\" does not exist","stack":"error: relation \"table2\" does not exist\n at Parser.parseErrorMessage (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:369:69)\n at Parser.handlePacket (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:188:21)\n at Parser.parse (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:103:30)\n at Socket.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:513:28)\n at Socket.emit (node:domain:489:12)\n at addChunk (node:internal/streams/readable:324:12)\n at readableAddChunk (node:internal/streams/readable:297:9)\n at Socket.Readable.push (node:internal/streams/readable:234:10)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","length":105,"name":"error","severity":"ERROR","code":"42P01","position":"22","file":"parse_relation.c","line":"1373","routine":"parserOpenTable"},"msg":"executing sql: select count(*) from table2, args: [], caused: relation \"table2\" does not exist"}
</system-out>
</testcase>
</testsuite>
<testsuite tests="2" failures="0" errors="0" name="_core › services › dbService › before hook">
<testcase name="#66 _core › services › dbService › DbService should work: positive cases."/>
<testcase name="#67 _core › services › dbService › DbService should work: negative cases.">
<system-out>{"level":50,"time":1669120623747,"pid":44781,"hostname":"fengyu-laptop-mj","from":"DbService","err":{"type":"DatabaseError","message":"relation \"table2\" does not exist","stack":"error: relation \"table2\" does not exist\n at Parser.parseErrorMessage (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:369:69)\n at Parser.handlePacket (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:188:21)\n at Parser.parse (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:103:30)\n at Socket.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:513:28)\n at Socket.emit (node:domain:489:12)\n at addChunk (node:internal/streams/readable:324:12)\n at readableAddChunk (node:internal/streams/readable:297:9)\n at Socket.Readable.push (node:internal/streams/readable:234:10)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","length":105,"name":"error","severity":"ERROR","code":"42P01","position":"22","file":"parse_relation.c","line":"1373","routine":"parserOpenTable"},"msg":"executing sql: select count(*) from table2, args: [], caused: relation \"table2\" does not exist"}
</system-out>
<system-out>{"level":50,"time":1669120623749,"pid":44781,"hostname":"fengyu-laptop-mj","from":"DbService","err":{"type":"DatabaseError","message":"null value in column \"name\" of relation \"table2\" violates not-null constraint","stack":"error: null value in column \"name\" of relation \"table2\" violates not-null constraint\n at Parser.parseErrorMessage (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:369:69)\n at Parser.handlePacket (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:188:21)\n at Parser.parse (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/parser.ts:103:30)\n at Socket.<anonymous> (/home/fengyu/projects/AlphaWallet/quick-eth/apps/api/node_modules/pg-protocol/src/index.ts:7:48)\n at Socket.emit (node:events:513:28)\n at Socket.emit (node:domain:489:12)\n at addChunk (node:internal/streams/readable:324:12)\n at readableAddChunk (node:internal/streams/readable:297:9)\n at Socket.Readable.push (node:internal/streams/readable:234:10)\n at TCP.onStreamRead (node:internal/stream_base_commons:190:23)","length":195,"name":"error","severity":"ERROR","code":"23502","detail":"Failing row contains (2, null).","schema":"public","table":"table2","column":"name","file":"execMain.c","line":"1947","routine":"ExecConstraints"},"msg":"executing transactions error. queries: [{\"sql\":\"\\n insert into table2 (name) values ($1)\\n \",\"params\":[\"name1\"]},{\"sql\":\"\\n insert into table2 (name) values ($1)\\n \",\"params\":[null]}], caused: null value in column \"name\" of relation \"table2\" violates not-null constraint"}
</system-out>
</testcase>
</testsuite>
<testsuite tests="0" failures="0" errors="0" name="_core › services › dbService › after hook"/>
</testsuites>
Hello,
I am using your test-report tool to showcase the test results regarding my flutter app, and i have discovered some discrepancies between counting of total tests and the actual file tests.
by using a simple json file generated by
flutter test --file-reporter json:"test-report.json"
and getting the following json file:
{"protocolVersion":"0.1.1","runnerVersion":"1.24.9","pid":9500,"type":"start","time":0}
{"suite":{"id":0,"platform":"vm","path":""},"type":"suite","time":0}
{"test":{"id":1,"name":"loading repo","suiteID":0,"groupIDs":[],"metadata":{"skip":false,"skipReason":null},"line":null,"column":null,"url":null},"type":"testStart","time":0}
{"count":1,"time":4,"type":"allSuites"}
{"testID":1,"result":"success","skipped":false,"hidden":true,"type":"testDone","time":108779}
{"group":{"id":2,"suiteID":0,"parentID":null,"name":"","metadata":{"skip":false,"skipReason":null},"testCount":12,"line":null,"column":null,"url":null},"type":"group","time":108781}
{"test":{"id":3,"name":"(setUpAll)","suiteID":0,"groupIDs":[2],"hidden": true, "metadata":{"skip":false,"skipReason":null},"line":56,"column":3,"url":""},"type":"testStart","time":108781}
{"testID":3,"result":"success","skipped":false,"hidden":true,"type":"testDone","time":108805}
{"group":{"id":4,"suiteID":0,"parentID":2,"name":"[NFC Workflow] Multiple screen sizes","metadata":{"skip":false,"skipReason":null},"testCount":6,"line":119,"column":3,"url":""},"type":"group","time":108805}
{"test":{"id":5,"name":"Sample success test","suiteID":0,"groupIDs":[2,4],"metadata":{"skip":false,"skipReason":null},"line":165,"column":5,"url":"package:flutter_test/src/widget_tester.dart","root_line":120,"root_column":5,"root_url":""},"type":"testStart","time":108806}
{"testID":5,"result":"success","skipped":false,"hidden":false,"type":"testDone","time":120992}
{"test":{"id":6,"name":"(tearDownAll)","suiteID":0,"groupIDs":[2],"metadata":{"skip":false,"skipReason":null},"line":42,"column":5,"url":"package:integration_test/integration_test.dart"},"type":"testStart","time":210072}
{"testID":6,"result":"success","skipped":false,"hidden":true,"type":"testDone","time":210074}
{"success":true,"type":"done","time":210081}
It is expected to see one of two scenarios:
if the tool doesn't take into consideration the "hidden":true
for the (setupAll)
and (tearDownAll)
the test reporting counts the tests as 3 tests were completed in 10s, 3 passed, 0 failed and 0 skipped
if the tool doe take into consideration the "hidden":true
for the (setupAll)
and (tearDownAll)
the test reporting counts the tests as 1 tests were completed in 10s, 1 passed, 0 failed and 0 skipped
So the counting is confusing
The set-output
command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Hi,
I'm trying to parse junit xml reports which were prepared by gtest framework using java-junit format and it's working well for report files which contains successful tests only.
While reporter is trying to parse xml with failed tests - I'm facing Error: Cannot read properties of undefined (reading 'split')
Sometimes our tests are not handling exceptions correctly (because this tests are coming from upstream project) and test case can miss failure message.
<testsuite name="SpellingMenuObserverTest" tests="1" failures="1" disabled="0" errors="0" time="34.336" timestamp="2022-05-24T09:57:08">
<testcase name="InitMenuWithCorrectWord" status="run" time="34.336" timestamp="2022-05-24T09:56:34" classname="SpellingMenuObserverTest">
<failure message="" type=""></failure>
</testcase>
</testsuite>
May I ask you to change current behaviour of parsing such messages if it's missing details. I've tried multiple command line parsers and they are working this way, just to check an assumption that gtest junit xml reports are really compatible with junit parsers.
Thanks in advance!
Here is the report.json
which generated by tap-mocha-reporter:
{
"stats": {
"suites": 0,
"tests": 67,
"passes": 67,
"pending": 0,
"failures": 0,
"start": "2022-11-22T12:23:06.109Z",
"end": "2022-11-22T12:23:14.723Z",
"duration": 8614
},
"tests": [
{
"title": "_core › services › jwtService › empty rule set should filter nothing",
"fullTitle": "_core › services › jwtService › empty rule set should filter nothing",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: GET",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: GET",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: GET",
"fullTitle": "_core › services › jwtService › only target url should be filtered: GET",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: GET",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: GET",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: POST",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: POST",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: POST",
"fullTitle": "_core › services › jwtService › only target url should be filtered: POST",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: POST",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: POST",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: PUT",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: PUT",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: PUT",
"fullTitle": "_core › services › jwtService › only target url should be filtered: PUT",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: PUT",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: PUT",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: DELETE",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: DELETE",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: DELETE",
"fullTitle": "_core › services › jwtService › only target url should be filtered: DELETE",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: DELETE",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: DELETE",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: OPTIONS",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: OPTIONS",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: OPTIONS",
"fullTitle": "_core › services › jwtService › only target url should be filtered: OPTIONS",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: OPTIONS",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: OPTIONS",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: HEAD",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: HEAD",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: HEAD",
"fullTitle": "_core › services › jwtService › only target url should be filtered: HEAD",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: HEAD",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: HEAD",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: TRACE",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: TRACE",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: TRACE",
"fullTitle": "_core › services › jwtService › only target url should be filtered: TRACE",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: TRACE",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: TRACE",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: PATCH",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: PATCH",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: PATCH",
"fullTitle": "_core › services › jwtService › only target url should be filtered: PATCH",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: PATCH",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: PATCH",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: get",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: get",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: get",
"fullTitle": "_core › services › jwtService › only target url should be filtered: get",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: get",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: get",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: post",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: post",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: post",
"fullTitle": "_core › services › jwtService › only target url should be filtered: post",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: post",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: post",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: put",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: put",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: put",
"fullTitle": "_core › services › jwtService › only target url should be filtered: put",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: put",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: put",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: delete",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: delete",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: delete",
"fullTitle": "_core › services › jwtService › only target url should be filtered: delete",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: delete",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: delete",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: options",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: options",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: options",
"fullTitle": "_core › services › jwtService › only target url should be filtered: options",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: options",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: options",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: head",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: head",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: head",
"fullTitle": "_core › services › jwtService › only target url should be filtered: head",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: head",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: head",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: trace",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: trace",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: trace",
"fullTitle": "_core › services › jwtService › only target url should be filtered: trace",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: trace",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: trace",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: patch",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: patch",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: patch",
"fullTitle": "_core › services › jwtService › only target url should be filtered: patch",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: patch",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: patch",
"err": {}
},
{
"title": "_core › utils › common › unifyAddresses(0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"fullTitle": "_core › utils › common › unifyAddresses(0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"err": {}
},
{
"title": "_core › utils › common › unifyAddresses(0X3F1ECC900564B03C79716FEF5FD62A676FD9E61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"fullTitle": "_core › utils › common › unifyAddresses(0X3F1ECC900564B03C79716FEF5FD62A676FD9E61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"err": {}
},
{
"title": "_core › utils › common › unifyAddresses(0x3f1ecc900564b03c79716fef5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"fullTitle": "_core › utils › common › unifyAddresses(0x3f1ecc900564b03c79716fef5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"err": {}
},
{
"title": "_core › utils › common › unifyAddresses(0x3f1ECC900564b03c79716FEF5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"fullTitle": "_core › utils › common › unifyAddresses(0x3f1ECC900564b03c79716FEF5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"err": {}
},
{
"title": "_core › utils › common › toHttpUrl should not change http based urls",
"fullTitle": "_core › utils › common › toHttpUrl should not change http based urls",
"err": {}
},
{
"title": "_core › utils › common › toHttpUrl should change ipfs based urls",
"fullTitle": "_core › utils › common › toHttpUrl should change ipfs based urls",
"err": {}
},
{
"title": "_core › utils › common › toHttpUrl should throw exception for non ipfs or http urls",
"fullTitle": "_core › utils › common › toHttpUrl should throw exception for non ipfs or http urls",
"err": {}
},
{
"title": "_core › utils › common › sameAddresses should work",
"fullTitle": "_core › utils › common › sameAddresses should work",
"err": {}
},
{
"title": "_core › utils › common › sameAddresses should not work for non-address strings",
"fullTitle": "_core › utils › common › sameAddresses should not work for non-address strings",
"err": {}
},
{
"title": "_core › utils › common › parseUnits / unitsOf should work",
"fullTitle": "_core › utils › common › parseUnits / unitsOf should work",
"err": {}
},
{
"title": "_core › utils › common › truncateNumber should work",
"fullTitle": "_core › utils › common › truncateNumber should work",
"err": {}
},
{
"title": "_core › utils › common › truncate should not work for non-number strings",
"fullTitle": "_core › utils › common › truncate should not work for non-number strings",
"err": {}
},
{
"title": "_core › utils › common › truncate should not work for invalid precision.",
"fullTitle": "_core › utils › common › truncate should not work for invalid precision.",
"err": {}
},
{
"title": "controller › actions › /health should work",
"fullTitle": "controller › actions › /health should work",
"err": {}
},
{
"title": "_core › controller › route › route should work",
"fullTitle": "_core › controller › route › route should work",
"err": {}
},
{
"title": "_core › controller › route › jwtVerifier should work",
"fullTitle": "_core › controller › route › jwtVerifier should work",
"err": {}
},
{
"title": "_core › services › dbService › DbService should work: positive cases.",
"fullTitle": "_core › services › dbService › DbService should work: positive cases.",
"err": {}
},
{
"title": "_core › services › dbService › DbService should work: negative cases.",
"fullTitle": "_core › services › dbService › DbService should work: negative cases.",
"err": {}
}
],
"pending": [],
"failures": [],
"passes": [
{
"title": "_core › services › jwtService › empty rule set should filter nothing",
"fullTitle": "_core › services › jwtService › empty rule set should filter nothing",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: GET",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: GET",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: GET",
"fullTitle": "_core › services › jwtService › only target url should be filtered: GET",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: GET",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: GET",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: POST",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: POST",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: POST",
"fullTitle": "_core › services › jwtService › only target url should be filtered: POST",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: POST",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: POST",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: PUT",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: PUT",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: PUT",
"fullTitle": "_core › services › jwtService › only target url should be filtered: PUT",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: PUT",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: PUT",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: DELETE",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: DELETE",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: DELETE",
"fullTitle": "_core › services › jwtService › only target url should be filtered: DELETE",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: DELETE",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: DELETE",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: OPTIONS",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: OPTIONS",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: OPTIONS",
"fullTitle": "_core › services › jwtService › only target url should be filtered: OPTIONS",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: OPTIONS",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: OPTIONS",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: HEAD",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: HEAD",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: HEAD",
"fullTitle": "_core › services › jwtService › only target url should be filtered: HEAD",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: HEAD",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: HEAD",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: TRACE",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: TRACE",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: TRACE",
"fullTitle": "_core › services › jwtService › only target url should be filtered: TRACE",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: TRACE",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: TRACE",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: PATCH",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: PATCH",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: PATCH",
"fullTitle": "_core › services › jwtService › only target url should be filtered: PATCH",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: PATCH",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: PATCH",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: get",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: get",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: get",
"fullTitle": "_core › services › jwtService › only target url should be filtered: get",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: get",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: get",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: post",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: post",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: post",
"fullTitle": "_core › services › jwtService › only target url should be filtered: post",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: post",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: post",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: put",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: put",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: put",
"fullTitle": "_core › services › jwtService › only target url should be filtered: put",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: put",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: put",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: delete",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: delete",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: delete",
"fullTitle": "_core › services › jwtService › only target url should be filtered: delete",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: delete",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: delete",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: options",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: options",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: options",
"fullTitle": "_core › services › jwtService › only target url should be filtered: options",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: options",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: options",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: head",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: head",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: head",
"fullTitle": "_core › services › jwtService › only target url should be filtered: head",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: head",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: head",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: trace",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: trace",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: trace",
"fullTitle": "_core › services › jwtService › only target url should be filtered: trace",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: trace",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: trace",
"err": {}
},
{
"title": "_core › services › jwtService › only limited methods should be filered: patch",
"fullTitle": "_core › services › jwtService › only limited methods should be filered: patch",
"err": {}
},
{
"title": "_core › services › jwtService › only target url should be filtered: patch",
"fullTitle": "_core › services › jwtService › only target url should be filtered: patch",
"err": {}
},
{
"title": "_core › services › jwtService › both patterns and methods in rules: patch",
"fullTitle": "_core › services › jwtService › both patterns and methods in rules: patch",
"err": {}
},
{
"title": "_core › utils › common › unifyAddresses(0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"fullTitle": "_core › utils › common › unifyAddresses(0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"err": {}
},
{
"title": "_core › utils › common › unifyAddresses(0X3F1ECC900564B03C79716FEF5FD62A676FD9E61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"fullTitle": "_core › utils › common › unifyAddresses(0X3F1ECC900564B03C79716FEF5FD62A676FD9E61D) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"err": {}
},
{
"title": "_core › utils › common › unifyAddresses(0x3f1ecc900564b03c79716fef5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"fullTitle": "_core › utils › common › unifyAddresses(0x3f1ecc900564b03c79716fef5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"err": {}
},
{
"title": "_core › utils › common › unifyAddresses(0x3f1ECC900564b03c79716FEF5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"fullTitle": "_core › utils › common › unifyAddresses(0x3f1ECC900564b03c79716FEF5fd62a676fd9e61d) === 0x3F1EcC900564b03C79716fef5FD62a676Fd9e61D",
"err": {}
},
{
"title": "_core › utils › common › toHttpUrl should not change http based urls",
"fullTitle": "_core › utils › common › toHttpUrl should not change http based urls",
"err": {}
},
{
"title": "_core › utils › common › toHttpUrl should change ipfs based urls",
"fullTitle": "_core › utils › common › toHttpUrl should change ipfs based urls",
"err": {}
},
{
"title": "_core › utils › common › toHttpUrl should throw exception for non ipfs or http urls",
"fullTitle": "_core › utils › common › toHttpUrl should throw exception for non ipfs or http urls",
"err": {}
},
{
"title": "_core › utils › common › sameAddresses should work",
"fullTitle": "_core › utils › common › sameAddresses should work",
"err": {}
},
{
"title": "_core › utils › common › sameAddresses should not work for non-address strings",
"fullTitle": "_core › utils › common › sameAddresses should not work for non-address strings",
"err": {}
},
{
"title": "_core › utils › common › parseUnits / unitsOf should work",
"fullTitle": "_core › utils › common › parseUnits / unitsOf should work",
"err": {}
},
{
"title": "_core › utils › common › truncateNumber should work",
"fullTitle": "_core › utils › common › truncateNumber should work",
"err": {}
},
{
"title": "_core › utils › common › truncate should not work for non-number strings",
"fullTitle": "_core › utils › common › truncate should not work for non-number strings",
"err": {}
},
{
"title": "_core › utils › common › truncate should not work for invalid precision.",
"fullTitle": "_core › utils › common › truncate should not work for invalid precision.",
"err": {}
},
{
"title": "controller › actions › /health should work",
"fullTitle": "controller › actions › /health should work",
"err": {}
},
{
"title": "_core › controller › route › route should work",
"fullTitle": "_core › controller › route › route should work",
"err": {}
},
{
"title": "_core › controller › route › jwtVerifier should work",
"fullTitle": "_core › controller › route › jwtVerifier should work",
"err": {}
},
{
"title": "_core › services › dbService › DbService should work: positive cases.",
"fullTitle": "_core › services › dbService › DbService should work: positive cases.",
"err": {}
},
{
"title": "_core › services › dbService › DbService should work: negative cases.",
"fullTitle": "_core › services › dbService › DbService should work: negative cases.",
"err": {}
}
]
}
But I got this error:
Curious why this fork was created without the original history of https://github.com/dorny/test-reporter? (If it's for issues, they should be able to be enabled afterwards.)
It'd be useful to be linked to the original project still and anyone who forked the original would have an easier time contributing here if the history and commits were linked/maintained.
It looks like the intent is to carry the project forward as the original repo hasn't had an update, but that's not clear based on the readme info.
Would be great to have some more background on the goals here as this does seem like a useful project. Thanks!
Error: Cannot read properties of undefined (reading 'split')
Hitting this with the following test results XML
- name: Test Report
uses: phoenix-actions/test-reporting@v8
with:
name: Terratest Tests
path: report.xml
reporter: java-junit
report.xml
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite tests="1" failures="1" time="0.000" name="Elvis">
<properties>
<property name="go.version" value="go1.17"></property>
</properties>
<testcase classname="Elvis" name="[build failed]" time="0.000">
<failure message="Failed" type=""></failure>
</testcase>
</testsuite>
</testsuites>
It's a Junit XML file created by Terratest
phoenix-actions/test-reporting@v11
Here is the full debug log:
Run phoenix-actions/test-reporting@v11
with:
name: E[2](https://github.com/MyProject/admin-client/actions/runs/4652843554/jobs/8233307625#step:10:2)E Tests
path: e2e/junit-results.xml
reporter: jest-junit
path-replace-backslashes: false
list-suites: all
list-tests: all
max-annotations: 10
fail-on-error: true
only-summary: false
output-to: checks
token: ***
env:
TESTGROUP: e2e
BASE_URL: https://fxxxxx.azurewebsites.net
/usr/bin/docker exec 5a4f[3](https://github.com/MyProject/admin-client/actions/runs/4652843554/jobs/8233307625#step:10:3)a7b753d9a5fdca6370c80ba33dbd[4](https://github.com/MyProject/admin-client/actions/runs/4652843554/jobs/8233307625#step:10:4)9a399007daadcfed0e98b073ec1174 sh -c "cat /etc/*release | grep ^ID"
Action was triggered by pull_request: using SHA from head of source branch
Check runs will be created with SHA=7042884dca[5](https://github.com/MyProject/admin-client/actions/runs/4652843554/jobs/8233307625#step:10:5)f305b521da4df425c[7](https://github.com/MyProject/admin-client/actions/runs/4652843554/jobs/8233307625#step:10:7)fe2174fe1[8](https://github.com/MyProject/admin-client/actions/runs/4652843554/jobs/8233307625#step:10:8)1
Listing all files tracked by git
Found 13[9](https://github.com/MyProject/admin-client/actions/runs/4652843554/jobs/8233307625#step:10:9)9 files tracked by GitHub
Using test report parser 'jest-junit'
Creating test report E2E Tests
Processing test results from e2e/junit-results.xml
Error: stackTrace.split is not a function
I’m writing regarding the GH Action Test Reporting
Our project is starting to migrate the CI/CD to GH Actions and we are interested to use your Actions.
Providing some context, our Security team requires the "Creator Verified by GitHub" badge to start the internal GHA verification process, due to this we are blocked to use unverified Actions.
We would be grateful if you could start the GH Action verification process, as it would help us greatly.
I believe it must improve your impact in the whole GitHub community as a partner organization and also, you are letting us use your actions.
You can find more helpful information in the following articles from GitHub Docs as a good starting point on the process.
Applying for publisher verification for your organization
About marketplace badges
The action fails to generate a report of an XML file, generated by the owasp dependecy check plugin for gradle, that contains a security vulnerability.
Logs of failed step (debug logging was enabled):
Run phoenix-actions/test-reporting@v10
with:
fail-on-error: true
list-suites: all
list-tests: all
name: OWASP Report
only-summary: false
path: **/build/reports/owasp/*-junit.xml
reporter: java-junit
token: ***
path-replace-backslashes: false
max-annotations: 10
output-to: checks
env:
JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.6-10/x64
JAVA_HOME_17_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/17.0.6-10/x64
Action was triggered by pull_request: using SHA from head of source branch
Check runs will be created with SHA=f4f66bc9b4c2f44316fe2af2a7b3caba29dcfb5f
::group::Listing all files tracked by git
Listing all files tracked by git
Found 116 files tracked by GitHub
Using test report parser 'java-junit'
::group::Creating test report OWASP Report
Creating test report OWASP Report
Processing test results from build/reports/owasp/dependency-check-junit.xml
Creating check run OWASP Report
Creating report summary
Generating check run summary
::endgroup::
Error: Cannot read properties of undefined (reading 'split')
The artifact containing the XML report that was processed is attached.
Hello,
I tried to run the example ./reports/mochawesome/
but the GH action test-reporting fails with the error: Error: mocha.passes is not iterable
Here is the log of the error:
in Run phoenix-actions/test-reporting@v8
Check runs will be created with SHA=2e3f46489bc63dabde89e4c218c27e5dda1961b9
Listing all files tracked by git
Found 66 files tracked by GitHub
Using test report parser 'mocha-json'
Creating test report Report Tests
Processing test results from integ-tests2/mochawesome-json.json
Error: mocha.passes is not iterable
My workflow is quite simple:
- name: Checkout Tests
uses: actions/checkout@v3
- name: Install Dependencies
run: npm ci
working-directory: ./integ-tests2/
- name: Run Test
run: npm run test
working-directory: ./integ-tests2/
- uses: phoenix-actions/test-reporting@v8
if: success() || failure()
id: test-report # Set ID reference for step
with:
name: Report Tests # Name of the check run which will be created
path: 'integ-tests2/*.json' # Path to test results (inside artifact .zip)
reporter: mocha-json
Any help would be appreciated since I try to get nice reports inside GitHub Actions (i'm working with cypress and mochawesome seems the right reporter)
This is an issue from the original repo
The same happens in this fork.
It can be duplicated if a report job either run manually via worfkflow disparch or run be a scheduler.
Basically if there were no new commit the report link is not appear at the left, only can be found in logs.
I would be willing to contribute the fix described in the above issue. However, I am very new to type-script and have no idea how to get started.
@IanMoroney Would it be possible for you to provide information on how to build/run this so I can try/add the suggested fix? Thanks!
My project produces millions of test executions over a 2 hour build. I was hoping to use this action for a summary of the results, which would be a lightweight as just the counts. Unfortunately the action failed with an out of memory error on a 2gb heap. Can the results be processed in a streaming fashion rather than read fully into memory, which avoids having a limit?
I see in the documentation there is a mention of NUnit as the supported framwork.
Since it is on the same line as .NET, I assume it is for dotnet. But why is it that the only dotnet reporter is dotnet-trx? I looked at the code and there is no mention of dotnet-nunit.
I really need to have this nunit support. Can you clarify how to enable it? (If not, why is it even mentioned in the documentation)
With v8 of the action, we've noticed that sometimes the test reports will appear not under the workflow they were created from, but another workflow that runs in parallel on the same trigger.
The two workflows:
build-and-test
: This runs test-reporting
for .NET builds. Two jobs run two builds (matrix builds, under Ubuntu and Windows) in parallel. The workflow utilizes an external reusable workflow, and where in the end test-reporting
is called is here.validate-pull-request
: This doesn't use test-reporting
.What we see:
build-and-test
run is correct, the test reports appear there. This is the corresponding validate-pull-request
run and this is also correct, no test reports there.build-and-test
run happened 5 minutes before the above one, without changing to the workflows. As you can see, the test reports are not there. They are, instead, under this is the corresponding validate-pull-request
run.This seems to be a bug to me. Note that the two workflows are unrelated apart from having an overlap of triggers.
Before we had the validate-pull-request
workflow, we noticed test reports randomly missing, which is perhaps the same issue.
Node 16 is now deprecated. Because of this, when using this action, you'll see warnings.
Please update the action to Node 20.
Hello.
Per your description for Recommended setup for public repositories how does the artifact:
option know which triggering run to go fetch the artifacts from?
More to the point however, is do you have any advise on how one can test/debug their implementation of .github/workflows/test-report.yml
in a PR -- without having to iterate on landing updates to make it work to the master branch?
I have tried adding on:
-> workflow_dispatch
to my .github/workflows/test-report.yml
and then running the workflow manually with:
But that manual run doesn't find artifacts to report on:
likely because it has no linkage back to a .github/workflows/ci.yml
that uploaded artifacts?
I have a "junit" type test report produced by Behat. When all the tests pass everything parses fine, however when the tests fail I get this error
Error: Cannot read properties of undefined (reading 'split')
I am using the java-junit as the test file type
I'm happy to send you the test output file privately
Happens with PlayWrite test fails, where it can produce a CDATA
body inside failure
.
Minimal test result that can reproduce the error:
<testsuites name="jest tests" tests="1" failures="1" skipped="0" errors="0" time="0.849">
<testsuite name="libs/foo.spec.ts" timestamp="1679511632462" hostname="LRS:Chromium" tests="1" failures="1" skipped="0" time="144.328" errors="0">
<testcase name="Test suite failure" classname="libs/foo.spec.ts" time="19.34">
<failure message="libs/foo.spec.ts:38:5 Test suite failure" type="FAILURE">
<![CDATA[ [LRS:Chromium] › libs/foo.spec.ts:38:5 › Test suite failure
locator.click: Error: strict mode violation: locator('button:text("Email")') resolved to 2 elements:
1) <button data-testid="first">Email</button> aka getByTestId('first')
2) <button data-testid="second">Anoher Email</button> aka getByTestId('second')
]]>
</failure>
</testcase>
</testsuite>
</testsuites>
Failure seems to be caused by https://github.com/phoenix-actions/test-reporting/blob/main/src/utils/node-utils.ts#L8
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.