1
+ <!DOCTYPE html>
2
+ < html lang ="en ">
3
+ < head >
4
+ < meta charset ="UTF-8 ">
5
+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
6
+ < title > Coverage Report - Rattlesnake</ title >
7
+ < style >
8
+ body {
9
+ font-family : -apple-system, BlinkMacSystemFont, 'Segoe UI' , Roboto, sans-serif;
10
+ margin : 0 ; padding : 20px ; background : # f6f8fa ; line-height : 1.6 ;
11
+ }
12
+ .container {
13
+ max-width : 1200px ; margin : 0 auto;
14
+ }
15
+ .header {
16
+ background : white; padding : 30px ; border-radius : 8px ;
17
+ box-shadow : 0 1px 3px rgba (0 , 0 , 0 , 0.1 ); margin-bottom : 20px ;
18
+ }
19
+ .coverage {
20
+ font-size : 2.5em ; font-weight : bold; color : # dc3545 ;
21
+ }
22
+ .metadata {
23
+ color : # 6a737d ; font-size : 0.9em ; margin-top : 10px ;
24
+ }
25
+ .nav {
26
+ background : white; padding : 20px ; border-radius : 8px ;
27
+ box-shadow : 0 1px 3px rgba (0 , 0 , 0 , 0.1 ); margin-bottom : 20px ;
28
+ }
29
+ .nav a {
30
+ background : # 0366d6 ; color : white; padding : 10px 20px ;
31
+ text-decoration : none; border-radius : 6px ; margin-right : 10px ;
32
+ display : inline-block; margin-bottom : 5px ;
33
+ }
34
+ .nav a : hover {
35
+ background : # 0256cc ;
36
+ }
37
+ .section {
38
+ background : white; padding : 25px ; border-radius : 8px ;
39
+ box-shadow : 0 1px 3px rgba (0 , 0 , 0 , 0.1 ); margin-bottom : 20px ;
40
+ }
41
+ .tests-list {
42
+ max-height : 500px ; overflow-y : auto;
43
+ border : 1px solid # e1e4e8 ; border-radius : 6px ;
44
+ }
45
+ .test-result {
46
+ padding : 10px ; border-bottom : 1px solid # e1e4e8 ;
47
+ font-family : 'SFMono-Regular' , 'Consolas' , monospace;
48
+ font-size : 0.9em ;
49
+ }
50
+ .test-result : last-child {
51
+ border-bottom : none;
52
+ }
53
+ .test-result .passed { background : # e6ffed ; }
54
+ .test-result .failed { background : # ffeef0 ; }
55
+ .test-result .skipped { background : # fff8e1 ; }
56
+ .test-result .error { background : # ffeaa7 ; }
57
+ .summary {
58
+ background : # f6f8fa ; padding : 20px ; border-radius : 6px ;
59
+ border-left : 4px solid # 0366d6 ; font-family : monospace;
60
+ white-space : pre-wrap;
61
+ }
62
+ .stats {
63
+ display : grid; grid-template-columns : repeat (auto-fit, minmax (200px , 1fr ));
64
+ gap : 15px ; margin-top : 20px ;
65
+ }
66
+ .stat-card {
67
+ background : # f6f8fa ; padding : 15px ; border-radius : 6px ; text-align : center;
68
+ }
69
+ .stat-number {
70
+ font-size : 1.8em ; font-weight : bold; color : # 0366d6 ;
71
+ }
72
+ .coverage-details {
73
+ display : grid; grid-template-columns : repeat (auto-fit, minmax (250px , 1fr ));
74
+ gap : 15px ; margin-top : 20px ;
75
+ }
76
+ .coverage-card {
77
+ background : # f6f8fa ; padding : 20px ; border-radius : 6px ;
78
+ }
79
+ .coverage-card h4 {
80
+ margin-top : 0 ; color : # 0366d6 ;
81
+ }
82
+ .progress-bar {
83
+ background : # e1e4e8 ; height : 20px ; border-radius : 10px ; overflow : hidden;
84
+ }
85
+ .progress-fill {
86
+ height : 100% ; background : # dc3545 ;
87
+ transition : width 0.3s ease;
88
+ }
89
+ .missing-coverage {
90
+ max-height : 400px ; overflow-y : auto;
91
+ border : 1px solid # e1e4e8 ; border-radius : 6px ;
92
+ }
93
+ .missing-file {
94
+ padding : 15px ; border-bottom : 1px solid # e1e4e8 ;
95
+ }
96
+ .missing-file : last-child {
97
+ border-bottom : none;
98
+ }
99
+ .missing-file h4 {
100
+ margin : 0 0 10px 0 ; color : # 0366d6 ;
101
+ font-family : 'SFMono-Regular' , 'Consolas' , monospace;
102
+ }
103
+ .missing-lines {
104
+ background : # ffeef0 ; padding : 10px ; border-radius : 4px ;
105
+ border-left : 4px solid # dc3545 ; font-family : monospace;
106
+ font-size : 0.9em ;
107
+ }
108
+ </ style >
109
+ </ head >
110
+ < body >
111
+ < div class ="container ">
112
+ < div class ="header ">
113
+ < h1 > Rattlesnake Coverage Report</ h1 >
114
+ < div class ="coverage "> 0.0%</ div >
115
+ < div class ="metadata ">
116
+ < div > < strong > Generated:</ strong > 2025-07-30 19:54:25 UTC (2025-07-30 15:54:25 EST / 2025-07-30 13:54:25 MST)</ div >
117
+ < div > < strong > Run ID:</ strong > 16632361205</ div >
118
+ < div > < strong > Branch:</ strong > dev</ div >
119
+ < div > < strong > Commit:</ strong > e2b27b93</ div >
120
+ </ div >
121
+ </ div >
122
+
123
+ < div class ="nav ">
124
+ < a href ="#summary "> Summary</ a >
125
+ < a href ="#tests "> Test Results (0)</ a >
126
+ < a href ="#coverage "> Coverage Details</ a >
127
+ < a href ="#missing "> Missing Coverage</ a >
128
+ < a href ="#full-report "> Full Report</ a >
129
+ < a href ="https://github.com/sandialabs/rattlesnake-vibration-controller/actions/runs/16632361205 "> View Workflow Run</ a >
130
+ < a href ="https://github.com/sandialabs/rattlesnake-vibration-controller "> Repository</ a >
131
+ </ div >
132
+
133
+ < div class ="section ">
134
+ < h2 id ="summary "> 📊 Test Summary</ h2 >
135
+ < div class ="stats ">
136
+ < div class ="stat-card ">
137
+ < div class ="stat-number "> 0</ div >
138
+ < div > Total Tests</ div >
139
+ </ div >
140
+ < div class ="stat-card ">
141
+ < div class ="stat-number " style ="color: #28a745; "> 0</ div >
142
+ < div > Passed</ div >
143
+ </ div >
144
+ < div class ="stat-card ">
145
+ < div class ="stat-number " style ="color: #dc3545; "> 0</ div >
146
+ < div > Failed</ div >
147
+ </ div >
148
+ < div class ="stat-card ">
149
+ < div class ="stat-number " style ="color: #ffc107; "> 0</ div >
150
+ < div > Skipped</ div >
151
+ </ div >
152
+ </ div >
153
+ </ div >
154
+
155
+ < div class ="section ">
156
+ < h2 id ="coverage "> 📈 Coverage Details</ h2 >
157
+ < div class ="coverage-details ">
158
+ < div class ="coverage-card ">
159
+ < h4 > Line Coverage</ h4 >
160
+ < div class ="progress-bar ">
161
+ < div class ="progress-fill " style ="width: 0.0%; "> </ div >
162
+ </ div >
163
+ < p > < strong > 0.0%</ strong > (0/10368 lines)</ p >
164
+ </ div >
165
+ < div class ="coverage-card ">
166
+ < h4 > Branch Coverage</ h4 >
167
+ < div class ="progress-bar ">
168
+ < div class ="progress-fill " style ="width: 0.0%; "> </ div >
169
+ </ div >
170
+ < p > < strong > 0.0%</ strong > (0/0 branches)</ p >
171
+ </ div >
172
+ </ div >
173
+ </ div >
174
+
175
+
176
+ < div class ="section ">
177
+ < h2 id ="missing "> 🚫 Missing Coverage</ h2 >
178
+ < div class ="missing-coverage ">
179
+ < div class ="coverage-card ">
180
+ < h4 > Line Coverage</ h4 >
181
+ < div class ="progress-bar ">
182
+ < div class ="progress-fill " style ="width: 0.0%; "> </ div >
183
+ </ div >
184
+ < p > < strong > 0.0%</ strong > (0/10368 lines)</ p >
185
+ </ div >
186
+ < div class ="coverage-card ">
187
+ < h4 > Branch Coverage</ h4 >
188
+ < div class ="progress-bar ">
189
+ < div class ="progress-fill " style ="width: 0.0%; "> </ div >
190
+ </ div >
191
+ < p > < strong > 0.0%</ strong > (0/0 branches)</ p >
192
+ </ div >
193
+ </ div >
194
+ </ div >
195
+
196
+
197
+ < div class ="section ">
198
+ < h2 id ="tests "> 🧪 Test Results Detail</ h2 >
199
+ < p > No test results found.</ p >
200
+ </ div >
201
+
202
+ < div class ="section ">
203
+ < h2 id ="full-report "> 📋 Full Report</ h2 >
204
+ < details >
205
+ < summary > Click to view complete pytest output</ summary >
206
+ < pre style ="background: #f6f8fa; padding: 20px; border-radius: 6px; overflow-x: auto; "> ============================= test session starts ==============================
207
+ platform linux -- Python 3.11.13, pytest-8.4.1, pluggy-1.6.0
208
+ PyQt5 5.15.11 -- Qt runtime 5.15.17 -- Qt compiled 5.15.14
209
+ rootdir: /home/runner/work/rattlesnake-vibration-controller/rattlesnake-vibration-controller
210
+ configfile: pyproject.toml
211
+ plugins: cov-6.2.1, qt-4.4.0
212
+ collected 1 item
213
+
214
+ tests/test_hello.py . [100%]
215
+
216
+ ================================ tests coverage ================================
217
+ _______________ coverage: platform linux, python 3.11.13-final-0 _______________
218
+
219
+ Name Stmts Miss Cover Missing
220
+ ---------------------------------------------------------------------------------------------------
221
+ src/rattlesnake/__init__.py 0 0 100%
222
+ src/rattlesnake/components/__init__.py 9 9 0% 28-41
223
+ src/rattlesnake/components/abstract_environment.py 151 151 0% 25-619
224
+ src/rattlesnake/components/abstract_hardware.py 44 44 0% 24-157
225
+ src/rattlesnake/components/abstract_message_process.py 53 53 0% 25-180
226
+ src/rattlesnake/components/abstract_sysid_data_analysis.py 76 76 0% 26-180
227
+ src/rattlesnake/components/abstract_sysid_environment.py 788 788 0% 25-1711
228
+ src/rattlesnake/components/acquisition.py 226 226 0% 24-434
229
+ src/rattlesnake/components/data_collector.py 306 306 0% 25-537
230
+ src/rattlesnake/components/data_physics_hardware.py 125 125 0% 25-359
231
+ src/rattlesnake/components/data_physics_interface.py 236 236 0% 25-393
232
+ src/rattlesnake/components/environments.py 52 52 0% 25-111
233
+ src/rattlesnake/components/exodus_modal_solution_hardware.py 201 201 0% 25-638
234
+ src/rattlesnake/components/lanxi_hardware_multiprocessing.py 570 570 0% 24-953
235
+ src/rattlesnake/components/lanxi_stream.py 235 235 0% 3-295
236
+ src/rattlesnake/components/modal_environment.py 1145 1145 0% 25-2061
237
+ src/rattlesnake/components/nidaqmx_hardware_multitask.py 184 184 0% 25-476
238
+ src/rattlesnake/components/output.py 163 163 0% 25-362
239
+ src/rattlesnake/components/random_vibration_sys_id_data_analysis.py 125 125 0% 26-331
240
+ src/rattlesnake/components/random_vibration_sys_id_environment.py 1075 1075 0% 30-2023
241
+ src/rattlesnake/components/random_vibration_sys_id_utilities.py 41 41 0% 24-87
242
+ src/rattlesnake/components/sdynpy_system_virtual_hardware.py 141 141 0% 24-435
243
+ src/rattlesnake/components/signal_generation.py 279 279 0% 24-526
244
+ src/rattlesnake/components/signal_generation_process.py 158 158 0% 24-386
245
+ src/rattlesnake/components/skeleton_sys_id_environment.py 114 114 0% 25-297
246
+ src/rattlesnake/components/spectral_processing.py 279 279 0% 25-588
247
+ src/rattlesnake/components/state_space_virtual_hardware.py 78 78 0% 25-307
248
+ src/rattlesnake/components/streaming.py 77 77 0% 25-212
249
+ src/rattlesnake/components/time_environment.py 332 332 0% 27-903
250
+ src/rattlesnake/components/transient_sys_id_environment.py 927 927 0% 25-1562
251
+ src/rattlesnake/components/ui_utilities.py 894 894 0% 24-1424
252
+ src/rattlesnake/components/user_interface.py 891 891 0% 25-1374
253
+ src/rattlesnake/components/utilities.py 306 306 0% 24-818
254
+ src/rattlesnake/hello.py 2 2 0% 4-6
255
+ src/rattlesnake/rattlesnake.py 85 85 0% 22-217
256
+ ---------------------------------------------------------------------------------------------------
257
+ TOTAL 10368 10368 0%
258
+ Coverage HTML written to dir htmlcov
259
+ Coverage XML written to file coverage.xml
260
+ ============================== 1 passed in 4.90s ===============================
261
+ </ pre >
262
+ </ details >
263
+ </ div >
264
+ </ div >
265
+ < footer style ="text-align: center; margin: 40px 0; color: #6a737d; ">
266
+ < p > Generated by GitHub Actions • < a href ="https://github.com/sandialabs/rattlesnake-vibration-controller "> Rattlesnake Project</ a > </ p >
267
+ </ footer >
268
+ </ body >
269
+ </ html >
0 commit comments