Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: install Codecov CLI and configure for coverage reporting #24

Merged
merged 15 commits into from
Nov 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/workflows/codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Run Tests and Upload Coverage

on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "18"

- name: Install dependencies
run: npm install

- name: Run tests with coverage
run: npm test

- name: Upload coverage to Codecov
run: npm run coverage:upload
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
9 changes: 8 additions & 1 deletion api/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

const express = require("express");
const cors = require("cors");
const axios = require("axios");
const superHeroAPIRoute = require("./routes/superHeroAPI");
const helloWorldRoute = require("./routes/hello");

Expand All @@ -27,4 +26,12 @@
});
});

const PORT = process.env.PORT || 3000;

if (process.env.NODE_ENV !== "test") {
app.listen(PORT, () => {
console.log(`Server ready on port ${PORT}.`);

Check warning on line 33 in api/index.js

View check run for this annotation

Codecov / codecov/patch

api/index.js#L32-L33

Added lines #L32 - L33 were not covered by tests
});
}

module.exports = app;
11 changes: 0 additions & 11 deletions api/server.js

This file was deleted.

5 changes: 0 additions & 5 deletions api/tests/hello.test.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
const request = require("supertest");
const app = require("../index");
const server = require("../server");

afterAll(() => {
server.close();
});

describe("GET /hello", () => {
it('should return a JSON response with message "hello"', async () => {
Expand Down
5 changes: 0 additions & 5 deletions api/tests/index.test.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
const request = require("supertest");
const app = require("../index");
const server = require("../server");

afterAll(() => {
server.close();
});

describe("GET /", () => {
it("should return a welcome message with a link to the documentation", async () => {
Expand Down
24 changes: 10 additions & 14 deletions coverage/clover.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1732124474518" clover="3.2.0">
<project timestamp="1732124474518" name="All files">
<metrics statements="31" coveredstatements="28" conditionals="2" coveredconditionals="2" methods="6" coveredmethods="3" elements="39" coveredelements="33" complexity="0" loc="31" ncloc="31" packages="2" files="4" classes="4"/>
<coverage generated="1732168823541" clover="3.2.0">
<project timestamp="1732168823541" name="All files">
<metrics statements="30" coveredstatements="25" conditionals="4" coveredconditionals="3" methods="6" coveredmethods="2" elements="40" coveredelements="30" complexity="0" loc="30" ncloc="30" packages="2" files="3" classes="3"/>
<package name="api">
<metrics statements="19" coveredstatements="19" conditionals="2" coveredconditionals="2" methods="2" coveredmethods="2"/>
<metrics statements="18" coveredstatements="16" conditionals="4" coveredconditionals="3" methods="2" coveredmethods="1"/>
<file name="index.js" path="/Users/som_ramnani/Projects/api-proxy-server/api/index.js">
<metrics statements="14" coveredstatements="14" conditionals="0" coveredconditionals="0" methods="1" coveredmethods="1"/>
<metrics statements="18" coveredstatements="16" conditionals="4" coveredconditionals="3" methods="2" coveredmethods="1"/>
<line num="1" count="2" type="stmt"/>
<line num="3" count="2" type="stmt"/>
<line num="4" count="2" type="stmt"/>
Expand All @@ -19,15 +19,11 @@
<line num="20" count="2" type="stmt"/>
<line num="22" count="2" type="stmt"/>
<line num="23" count="1" type="stmt"/>
<line num="34" count="2" type="stmt"/>
</file>
<file name="server.js" path="/Users/som_ramnani/Projects/api-proxy-server/api/server.js">
<metrics statements="5" coveredstatements="5" conditionals="2" coveredconditionals="2" methods="1" coveredmethods="1"/>
<line num="1" count="2" type="stmt"/>
<line num="3" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="6" count="2" type="stmt"/>
<line num="7" count="2" type="stmt"/>
<line num="10" count="2" type="stmt"/>
<line num="30" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="32" count="2" type="cond" truecount="1" falsecount="1"/>
<line num="33" count="0" type="stmt"/>
<line num="34" count="0" type="stmt"/>
<line num="38" count="2" type="stmt"/>
</file>
</package>
<package name="api.routes">
Expand Down
3 changes: 1 addition & 2 deletions coverage/coverage-final.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{"/Users/som_ramnani/Projects/api-proxy-server/api/index.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/index.js","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}},"1":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"2":{"start":{"line":4,"column":13},"end":{"line":4,"column":28}},"3":{"start":{"line":5,"column":14},"end":{"line":5,"column":30}},"4":{"start":{"line":6,"column":26},"end":{"line":6,"column":58}},"5":{"start":{"line":7,"column":24},"end":{"line":7,"column":49}},"6":{"start":{"line":9,"column":12},"end":{"line":9,"column":21}},"7":{"start":{"line":11,"column":20},"end":{"line":15,"column":1}},"8":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"9":{"start":{"line":19,"column":0},"end":{"line":19,"column":46}},"10":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"11":{"start":{"line":22,"column":0},"end":{"line":28,"column":3}},"12":{"start":{"line":23,"column":2},"end":{"line":27,"column":5}},"13":{"start":{"line":34,"column":0},"end":{"line":34,"column":21}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":22,"column":13},"end":{"line":22,"column":14}},"loc":{"start":{"line":22,"column":27},"end":{"line":28,"column":1}},"line":22}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":1,"13":2},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a47d14f9f9678434f0bae3fab348bd3aa024e9ef"}
,"/Users/som_ramnani/Projects/api-proxy-server/api/server.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/server.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":30}},"1":{"start":{"line":3,"column":13},"end":{"line":3,"column":37}},"2":{"start":{"line":6,"column":15},"end":{"line":8,"column":1}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":46}},"4":{"start":{"line":10,"column":0},"end":{"line":10,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":32},"end":{"line":6,"column":33}},"loc":{"start":{"line":7,"column":2},"end":{"line":7,"column":46}},"line":7}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":13},"end":{"line":3,"column":37}},"type":"binary-expr","locations":[{"start":{"line":3,"column":13},"end":{"line":3,"column":29}},{"start":{"line":3,"column":33},"end":{"line":3,"column":37}}],"line":3}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2},"f":{"0":2},"b":{"0":[2,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5aae2580c8654ff9d667c494799b89ff0e1b4088"}
{"/Users/som_ramnani/Projects/api-proxy-server/api/index.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/index.js","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":27}},"1":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"2":{"start":{"line":4,"column":13},"end":{"line":4,"column":28}},"3":{"start":{"line":5,"column":14},"end":{"line":5,"column":30}},"4":{"start":{"line":6,"column":26},"end":{"line":6,"column":58}},"5":{"start":{"line":7,"column":24},"end":{"line":7,"column":49}},"6":{"start":{"line":9,"column":12},"end":{"line":9,"column":21}},"7":{"start":{"line":11,"column":20},"end":{"line":15,"column":1}},"8":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"9":{"start":{"line":19,"column":0},"end":{"line":19,"column":46}},"10":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"11":{"start":{"line":22,"column":0},"end":{"line":28,"column":3}},"12":{"start":{"line":23,"column":2},"end":{"line":27,"column":5}},"13":{"start":{"line":30,"column":13},"end":{"line":30,"column":37}},"14":{"start":{"line":32,"column":0},"end":{"line":36,"column":1}},"15":{"start":{"line":33,"column":2},"end":{"line":35,"column":5}},"16":{"start":{"line":34,"column":4},"end":{"line":34,"column":49}},"17":{"start":{"line":38,"column":0},"end":{"line":38,"column":21}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":22,"column":13},"end":{"line":22,"column":14}},"loc":{"start":{"line":22,"column":27},"end":{"line":28,"column":1}},"line":22},"1":{"name":"(anonymous_1)","decl":{"start":{"line":33,"column":19},"end":{"line":33,"column":20}},"loc":{"start":{"line":33,"column":25},"end":{"line":35,"column":3}},"line":33}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":13},"end":{"line":30,"column":37}},"type":"binary-expr","locations":[{"start":{"line":30,"column":13},"end":{"line":30,"column":29}},{"start":{"line":30,"column":33},"end":{"line":30,"column":37}}],"line":30},"1":{"loc":{"start":{"line":32,"column":0},"end":{"line":36,"column":1}},"type":"if","locations":[{"start":{"line":32,"column":0},"end":{"line":36,"column":1}},{"start":{},"end":{}}],"line":32}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":1,"13":2,"14":2,"15":0,"16":0,"17":2},"f":{"0":1,"1":0},"b":{"0":[2,2],"1":[0,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4569801c76b1c186e1add62c63f3933d6289e677"}
,"/Users/som_ramnani/Projects/api-proxy-server/api/routes/hello.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/routes/hello.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":15},"end":{"line":2,"column":31}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":62}},"3":{"start":{"line":4,"column":30},"end":{"line":4,"column":60}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":17}},"loc":{"start":{"line":4,"column":30},"end":{"line":4,"column":60}},"line":4}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":1,"4":2},"f":{"0":1},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"eebe1ea5ad45c88429d33abb13b0c376403ca861"}
,"/Users/som_ramnani/Projects/api-proxy-server/api/routes/superHeroAPI.js": {"path":"/Users/som_ramnani/Projects/api-proxy-server/api/routes/superHeroAPI.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":14},"end":{"line":2,"column":30}},"2":{"start":{"line":3,"column":15},"end":{"line":3,"column":31}},"3":{"start":{"line":5,"column":0},"end":{"line":16,"column":3}},"4":{"start":{"line":6,"column":2},"end":{"line":15,"column":7}},"5":{"start":{"line":11,"column":6},"end":{"line":11,"column":37}},"6":{"start":{"line":14,"column":6},"end":{"line":14,"column":32}},"7":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":21},"end":{"line":5,"column":22}},"loc":{"start":{"line":5,"column":41},"end":{"line":16,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":10},"end":{"line":10,"column":11}},"loc":{"start":{"line":10,"column":30},"end":{"line":12,"column":5}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":11},"end":{"line":13,"column":12}},"loc":{"start":{"line":13,"column":20},"end":{"line":15,"column":5}},"line":13}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":0,"5":0,"6":0,"7":2},"f":{"0":0,"1":0,"2":0},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b8fb18229cabf2caa93bebb7d66e8033fd7bec99"}
}
53 changes: 19 additions & 34 deletions coverage/lcov-report/api/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,30 @@ <h1><a href="../index.html">All files</a> api</h1>
<div class='clearfix'>

<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">88.88% </span>
<span class="quiet">Statements</span>
<span class='fraction'>19/19</span>
<span class='fraction'>16/18</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">75% </span>
<span class="quiet">Branches</span>
<span class='fraction'>2/2</span>
<span class='fraction'>3/4</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">50% </span>
<span class="quiet">Functions</span>
<span class='fraction'>2/2</span>
<span class='fraction'>1/2</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">88.88% </span>
<span class="quiet">Lines</span>
<span class='fraction'>19/19</span>
<span class='fraction'>16/18</span>
</div>


Expand Down Expand Up @@ -80,32 +80,17 @@ <h1><a href="../index.html">All files</a> api</h1>
</thead>
<tbody><tr>
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
<td data-value="88.88" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="14" class="abs high">14/14</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="14" class="abs high">14/14</td>
</tr>

<tr>
<td class="file high" data-value="server.js"><a href="server.js.html">server.js</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="5" class="abs high">5/5</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="1" class="abs high">1/1</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="5" class="abs high">5/5</td>
<td data-value="88.88" class="pct high">88.88%</td>
<td data-value="18" class="abs high">16/18</td>
<td data-value="75" class="pct medium">75%</td>
<td data-value="4" class="abs medium">3/4</td>
<td data-value="50" class="pct medium">50%</td>
<td data-value="2" class="abs medium">1/2</td>
<td data-value="88.88" class="pct high">88.88%</td>
<td data-value="18" class="abs high">16/18</td>
</tr>

</tbody>
Expand All @@ -116,7 +101,7 @@ <h1><a href="../index.html">All files</a> api</h1>
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-11-20T17:41:14.512Z
at 2024-11-21T06:00:23.535Z
</div>
<script src="../prettify.js"></script>
<script>
Expand Down
38 changes: 25 additions & 13 deletions coverage/lcov-report/api/index.js.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,30 @@ <h1><a href="../index.html">All files</a> / <a href="index.html">api</a> index.j
<div class='clearfix'>

<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">88.88% </span>
<span class="quiet">Statements</span>
<span class='fraction'>14/14</span>
<span class='fraction'>16/18</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">75% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
<span class='fraction'>3/4</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">50% </span>
<span class="quiet">Functions</span>
<span class='fraction'>1/1</span>
<span class='fraction'>1/2</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">88.88% </span>
<span class="quiet">Lines</span>
<span class='fraction'>14/14</span>
<span class='fraction'>16/18</span>
</div>


Expand Down Expand Up @@ -97,7 +97,11 @@ <h1><a href="../index.html">All files</a> / <a href="index.html">api</a> index.j
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">2x</span>
Expand Down Expand Up @@ -126,7 +130,11 @@ <h1><a href="../index.html">All files</a> / <a href="index.html">api</a> index.j
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
Expand Down Expand Up @@ -160,9 +168,13 @@ <h1><a href="../index.html">All files</a> / <a href="index.html">api</a> index.j
});
});
&nbsp;
// const server = app.listen(3002, () =&gt;
// console.log("Server ready on port 3002.")
// );
const PORT = process.env.PORT || 3000;
&nbsp;
<span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.NODE_ENV !== "test") {
<span class="cstat-no" title="statement not covered" > app.listen(PORT, <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
<span class="cstat-no" title="statement not covered" > console.log(`Server ready on port ${PORT}.`);</span>
});
}
&nbsp;
module.exports = app;
&nbsp;</pre></td></tr></table></pre>
Expand All @@ -172,7 +184,7 @@ <h1><a href="../index.html">All files</a> / <a href="index.html">api</a> index.j
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2024-11-20T17:41:14.512Z
at 2024-11-21T06:00:23.535Z
</div>
<script src="../prettify.js"></script>
<script>
Expand Down
Loading
Loading