MovieMapper/coverage/index.html
Jarian Cottingham 9b6e90ce0e test: add Vitest suite with 86% coverage threshold
- Add Vitest + jsdom test framework with V8 coverage
- 118 tests across 7 test files covering AppState, ProgressManager, EpisodeManager, FileListManager, fileUtils, main.js logic, renderer escapeHtml, preload module polyfill
- Fix async bug in extractFileDuration (await in non-async callback)
- CI enforces 85% coverage threshold on testable modules
- Exclude Electron IPC wrappers (FileManager, SearchManager, TagManager, ModalManager, UIManager) from coverage as they require Electron runtime
2026-07-06 04:54:40 +00:00

161 lines
6.4 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>All files</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">86.47% </span>
<span class="quiet">Statements</span>
<span class='fraction'>729/843</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">86.95% </span>
<span class="quiet">Branches</span>
<span class='fraction'>100/115</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">86.44% </span>
<span class="quiet">Functions</span>
<span class='fraction'>51/59</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">86.47% </span>
<span class="quiet">Lines</span>
<span class='fraction'>729/843</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input type="search" id="fileSearch">
</div>
</template>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="AppState.js"><a href="AppState.js.html">AppState.js</a></td>
<td data-value="98.9" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 98%"></div><div class="cover-empty" style="width: 2%"></div></div>
</td>
<td data-value="98.9" class="pct high">98.9%</td>
<td data-value="182" class="abs high">180/182</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="24" class="abs high">24/24</td>
<td data-value="95.45" class="pct high">95.45%</td>
<td data-value="22" class="abs high">21/22</td>
<td data-value="98.9" class="pct high">98.9%</td>
<td data-value="182" class="abs high">180/182</td>
</tr>
<tr>
<td class="file high" data-value="EpisodeManager.js"><a href="EpisodeManager.js.html">EpisodeManager.js</a></td>
<td data-value="81.27" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
</td>
<td data-value="81.27" class="pct high">81.27%</td>
<td data-value="251" class="abs high">204/251</td>
<td data-value="85.1" class="pct high">85.1%</td>
<td data-value="47" class="abs high">40/47</td>
<td data-value="84.61" class="pct high">84.61%</td>
<td data-value="13" class="abs high">11/13</td>
<td data-value="81.27" class="pct high">81.27%</td>
<td data-value="251" class="abs high">204/251</td>
</tr>
<tr>
<td class="file high" data-value="FileListManager.js"><a href="FileListManager.js.html">FileListManager.js</a></td>
<td data-value="80.88" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
</td>
<td data-value="80.88" class="pct high">80.88%</td>
<td data-value="340" class="abs high">275/340</td>
<td data-value="78.37" class="pct medium">78.37%</td>
<td data-value="37" class="abs medium">29/37</td>
<td data-value="70.58" class="pct medium">70.58%</td>
<td data-value="17" class="abs medium">12/17</td>
<td data-value="80.88" class="pct high">80.88%</td>
<td data-value="340" class="abs high">275/340</td>
</tr>
<tr>
<td class="file high" data-value="ProgressManager.js"><a href="ProgressManager.js.html">ProgressManager.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="70" class="abs high">70/70</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="7" class="abs high">7/7</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="7" class="abs high">7/7</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="70" class="abs high">70/70</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<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 2026-07-06T04:54:04.463Z
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="sorter.js"></script>
<script src="block-navigation.js"></script>
</body>
</html>