capydash 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb913ca0b0dce3912a15dd5eb2f1fd2673671771ff34b485f4b1c5567240faa7
4
- data.tar.gz: '0794e75f2f6d2d3c6e50cb0d49370c71d7f571c87a93519fc04947ff16c3c71b'
3
+ metadata.gz: af3047672b2118bbe6b3eb83ae3d9149c96d4811d11cd6e66927bfb8acb88d02
4
+ data.tar.gz: 25ab89fd8389339c24c4dc1d64d163d41331aed4f2aca9b268ddbcbcb96f8165
5
5
  SHA512:
6
- metadata.gz: 153585a1af8f9ef4415a509a53c265f552bdfc496ae20409f38ce850e09624259211f53af41e13ad59bb4384936df2cdaeab3a83aab34e22dece0401fd1b4b57
7
- data.tar.gz: 6079967d5cb84f6d3867a5d8ae6a996df16c8db45a800811e0c218a3d954a6615a86aea31fed07cdb2a92f0629a5d0c8e1a5eebecf0ac880af5ed4bc09307e77
6
+ metadata.gz: f38f1587dcd12372431b5d5e39812a64aef58a1f5eff522a492ce85efd9317e97789d42195e96f682bf51aaced8e56ae99f6548611b6bbc885e56e91514c1edf
7
+ data.tar.gz: 05b0a7453cfb5667bbdbb895685f3638e5d3b93df6a8dae0868b794bdd6e02222abd4947561a438f0b4702fff6bf5d1ac1eb94c22f962f3b0dc3ee64bcf52d9e
@@ -5,54 +5,18 @@ require 'erb'
5
5
  module CapyDash
6
6
  module RSpec
7
7
  class << self
8
- def setup!
9
- return unless rspec_available?
10
- return if @configured
11
-
12
- begin
13
- @configured = true
14
- @results = []
15
- @started_at = nil
16
-
17
- ::RSpec.configure do |config|
18
- config.before(:suite) do
19
- CapyDash::RSpec.start_run
20
- end
21
-
22
- config.after(:each) do |example|
23
- CapyDash::RSpec.record_example(example)
24
- end
25
-
26
- config.after(:suite) do
27
- CapyDash::RSpec.generate_report
28
- end
29
- end
30
- rescue => e
31
- # If RSpec isn't ready, silently fail - it will be set up later
32
- @configured = false
33
- end
34
- end
35
-
36
- private
37
-
38
- def rspec_available?
39
- return false unless defined?(::RSpec)
40
- return false unless ::RSpec.respond_to?(:configure)
41
- true
42
- rescue
43
- false
44
- end
45
-
8
+ # Public method: Called from RSpec before(:suite) hook
46
9
  def start_run
47
10
  @results = []
48
11
  @started_at = Time.now
49
12
  end
50
13
 
14
+ # Public method: Called from RSpec after(:each) hook
51
15
  def record_example(example)
52
16
  return unless @started_at
53
17
 
54
18
  execution_result = example.execution_result
55
- status = execution_result.status.to_s
19
+ status = normalize_status(execution_result.status)
56
20
 
57
21
  error_message = nil
58
22
  if execution_result.status == :failed && execution_result.exception
@@ -71,6 +35,7 @@ module CapyDash
71
35
  }
72
36
  end
73
37
 
38
+ # Public method: Called from RSpec after(:suite) hook
74
39
  def generate_report
75
40
  return unless @started_at
76
41
  return if @results.empty?
@@ -123,8 +88,59 @@ module CapyDash
123
88
  report_dir
124
89
  end
125
90
 
91
+ # Public method: Sets up RSpec hooks
92
+ def setup!
93
+ return unless rspec_available?
94
+ return if @configured
95
+
96
+ begin
97
+ @configured = true
98
+ @results = []
99
+ @started_at = nil
100
+
101
+ ::RSpec.configure do |config|
102
+ config.before(:suite) do
103
+ CapyDash::RSpec.start_run
104
+ end
105
+
106
+ config.after(:each) do |example|
107
+ CapyDash::RSpec.record_example(example)
108
+ end
109
+
110
+ config.after(:suite) do
111
+ CapyDash::RSpec.generate_report
112
+ end
113
+ end
114
+ rescue => e
115
+ # If RSpec isn't ready, silently fail - it will be set up later
116
+ @configured = false
117
+ end
118
+ end
119
+
126
120
  private
127
121
 
122
+ def rspec_available?
123
+ return false unless defined?(::RSpec)
124
+ return false unless ::RSpec.respond_to?(:configure)
125
+ true
126
+ rescue
127
+ false
128
+ end
129
+
130
+ def normalize_status(status)
131
+ # Normalize RSpec status symbols to strings
132
+ case status
133
+ when :passed, 'passed'
134
+ 'passed'
135
+ when :failed, 'failed'
136
+ 'failed'
137
+ when :pending, 'pending'
138
+ 'pending'
139
+ else
140
+ status.to_s
141
+ end
142
+ end
143
+
128
144
  def extract_class_name(file_path)
129
145
  return 'UnknownSpec' if file_path.nil? || file_path.empty?
130
146
 
@@ -221,38 +237,6 @@ module CapyDash
221
237
  box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);
222
238
  }
223
239
 
224
- .test-method.hidden {
225
- display: none;
226
- }
227
-
228
- .test-class.hidden {
229
- display: none;
230
- }
231
-
232
- .method-status {
233
- padding: 0.25rem 0.75rem;
234
- border-radius: 4px;
235
- font-size: 0.75rem;
236
- font-weight: 600;
237
- text-transform: uppercase;
238
- letter-spacing: 0.5px;
239
- }
240
-
241
- .method-status-passed {
242
- background: #27ae60;
243
- color: white;
244
- }
245
-
246
- .method-status-failed {
247
- background: #e74c3c;
248
- color: white;
249
- }
250
-
251
- .method-status-pending {
252
- background: #f39c12;
253
- color: white;
254
- }
255
-
256
240
  .summary {
257
241
  display: grid;
258
242
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
@@ -308,6 +292,10 @@ module CapyDash
308
292
  border-bottom: none;
309
293
  }
310
294
 
295
+ .test-class.hidden {
296
+ display: none;
297
+ }
298
+
311
299
  .test-class h2 {
312
300
  background: #f8f9fa;
313
301
  padding: 1rem 1.5rem;
@@ -326,6 +314,10 @@ module CapyDash
326
314
  border-bottom: none;
327
315
  }
328
316
 
317
+ .test-method.hidden {
318
+ display: none;
319
+ }
320
+
329
321
  .test-method-header {
330
322
  display: flex;
331
323
  align-items: center;
@@ -341,35 +333,32 @@ module CapyDash
341
333
  flex: 1;
342
334
  }
343
335
 
344
- .test-method.hidden {
345
- display: none;
346
- }
347
-
348
- .test-class.hidden {
349
- display: none;
350
- }
351
-
352
336
  .method-status {
353
- padding: 0.25rem 0.75rem;
337
+ display: inline-flex;
338
+ align-items: center;
339
+ padding: 0.35rem 0.85rem;
354
340
  border-radius: 4px;
355
341
  font-size: 0.75rem;
356
342
  font-weight: 600;
357
343
  text-transform: uppercase;
358
344
  letter-spacing: 0.5px;
345
+ white-space: nowrap;
346
+ min-width: 60px;
347
+ justify-content: center;
359
348
  }
360
349
 
361
350
  .method-status-passed {
362
- background: #27ae60;
351
+ background-color: #27ae60;
363
352
  color: white;
364
353
  }
365
354
 
366
355
  .method-status-failed {
367
- background: #e74c3c;
356
+ background-color: #e74c3c;
368
357
  color: white;
369
358
  }
370
359
 
371
360
  .method-status-pending {
372
- background: #f39c12;
361
+ background-color: #f39c12;
373
362
  color: white;
374
363
  }
375
364
 
@@ -44,7 +44,9 @@
44
44
  <span class="expand-icon">▶</span>
45
45
  </button>
46
46
  <h3><%= method[:name] %></h3>
47
- <span class="method-status method-status-<%= method[:status] %>"><%= method[:status] %></span>
47
+ <% if method[:status] %>
48
+ <span class="method-status method-status-<%= method[:status] %>"><%= method[:status] %></span>
49
+ <% end %>
48
50
  </div>
49
51
  <div class="steps collapsed" id="steps-<%= method[:safe_id] %>">
50
52
  <% method[:steps].each do |step| %>
@@ -1,3 +1,3 @@
1
1
  module CapyDash
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capydash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damon Clark