inferno_core 0.0.6 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/inferno +7 -0
- data/lib/inferno/apps/cli/console.rb +12 -0
- data/lib/inferno/apps/cli/main.rb +18 -0
- data/lib/inferno/apps/cli/migration.rb +14 -0
- data/lib/inferno/apps/cli.rb +8 -0
- data/lib/inferno/apps/web/index.html.erb +1 -0
- data/lib/inferno/config/application.rb +3 -0
- data/lib/inferno/config/boot/db.rb +1 -9
- data/lib/inferno/config/boot/logging.rb +2 -0
- data/lib/inferno/db/migrations/001_create_initial_structure.rb +1 -1
- data/lib/inferno/db/schema.rb +1 -1
- data/lib/inferno/dsl/assertions.rb +66 -1
- data/lib/inferno/dsl/configurable.rb +1 -1
- data/lib/inferno/dsl/fhir_client.rb +22 -18
- data/lib/inferno/dsl/fhir_client_builder.rb +3 -3
- data/lib/inferno/dsl/fhir_validation.rb +105 -1
- data/lib/inferno/dsl/http_client.rb +4 -4
- data/lib/inferno/dsl/http_client_builder.rb +3 -3
- data/lib/inferno/dsl/request_storage.rb +8 -8
- data/lib/inferno/dsl/results.rb +1 -1
- data/lib/inferno/dsl/resume_test_route.rb +9 -9
- data/lib/inferno/dsl/runnable.rb +36 -18
- data/lib/inferno/entities/header.rb +14 -7
- data/lib/inferno/entities/message.rb +16 -8
- data/lib/inferno/entities/request.rb +32 -19
- data/lib/inferno/entities/result.rb +36 -29
- data/lib/inferno/entities/session_data.rb +12 -6
- data/lib/inferno/entities/test.rb +13 -0
- data/lib/inferno/entities/test_run.rb +29 -6
- data/lib/inferno/entities/test_session.rb +16 -10
- data/lib/inferno/public/217.bundle.js +1 -1
- data/lib/inferno/public/bundle.js +154 -1
- data/lib/inferno/public/bundle.js.LICENSE.txt +15 -0
- data/lib/inferno/repositories/in_memory_repository.rb +1 -1
- data/lib/inferno/repositories/results.rb +1 -1
- data/lib/inferno/spec_support.rb +1 -1
- data/lib/inferno/test_runner.rb +1 -1
- data/lib/inferno/utils/markdown_formatter.rb +1 -1
- data/lib/inferno/utils/middleware/request_logger.rb +9 -3
- data/lib/inferno/utils/migration.rb +17 -0
- data/lib/inferno/version.rb +1 -1
- data/lib/inferno.rb +0 -4
- metadata +41 -8
- data/bin/inferno-console +0 -8
@@ -15,12 +15,14 @@ module Inferno
|
|
15
15
|
attr_accessor :result_message
|
16
16
|
attr_reader :test_session_id, :scratch
|
17
17
|
|
18
|
+
# @private
|
18
19
|
def initialize(**params)
|
19
20
|
params[:inputs]&.each { |key, value| instance_variable_set("@#{key}", value) }
|
20
21
|
@scratch = params[:scratch]
|
21
22
|
@test_session_id = params[:test_session_id]
|
22
23
|
end
|
23
24
|
|
25
|
+
# @private
|
24
26
|
def messages
|
25
27
|
@messages ||= []
|
26
28
|
end
|
@@ -100,6 +102,7 @@ module Inferno
|
|
100
102
|
add_message('warning', e.message)
|
101
103
|
end
|
102
104
|
|
105
|
+
# @private
|
103
106
|
def method_missing(name, *args, &block)
|
104
107
|
parent_instance = self.class.parent&.new
|
105
108
|
if parent_instance.respond_to?(name)
|
@@ -109,6 +112,7 @@ module Inferno
|
|
109
112
|
end
|
110
113
|
end
|
111
114
|
|
115
|
+
# @private
|
112
116
|
def respond_to_missing?(name, _include_private = false)
|
113
117
|
self.class.parent&.new&.respond_to?(name)
|
114
118
|
end
|
@@ -155,6 +159,10 @@ module Inferno
|
|
155
159
|
Inferno::Repositories::Tests.new
|
156
160
|
end
|
157
161
|
|
162
|
+
# Set/Get the block that is executed when a Test is run
|
163
|
+
#
|
164
|
+
# @param block [Proc]
|
165
|
+
# @return [Proc] the block that is executed when a Test is run
|
158
166
|
def block(&block)
|
159
167
|
return @block unless block_given?
|
160
168
|
|
@@ -163,6 +171,7 @@ module Inferno
|
|
163
171
|
|
164
172
|
alias run block
|
165
173
|
|
174
|
+
# @private
|
166
175
|
def default_id
|
167
176
|
return name if name.present?
|
168
177
|
|
@@ -170,16 +179,19 @@ module Inferno
|
|
170
179
|
"Test#{suffix}"
|
171
180
|
end
|
172
181
|
|
182
|
+
# @private
|
173
183
|
def reference_hash
|
174
184
|
{
|
175
185
|
test_id: id
|
176
186
|
}
|
177
187
|
end
|
178
188
|
|
189
|
+
# @private
|
179
190
|
def test_count
|
180
191
|
1
|
181
192
|
end
|
182
193
|
|
194
|
+
# @private
|
183
195
|
def method_missing(name, *args, &block)
|
184
196
|
parent_instance = parent&.new
|
185
197
|
if parent_instance.respond_to?(name)
|
@@ -189,6 +201,7 @@ module Inferno
|
|
189
201
|
end
|
190
202
|
end
|
191
203
|
|
204
|
+
# @private
|
192
205
|
def respond_to_missing?(name, _include_private = false)
|
193
206
|
parent&.new&.respond_to?(name)
|
194
207
|
end
|
@@ -2,12 +2,35 @@ module Inferno
|
|
2
2
|
module Entities
|
3
3
|
# A `TestRun` represents a request to execute an executable set of tests.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
5
|
+
# @!attribute id
|
6
|
+
# @return [String] id of the test run
|
7
|
+
# @!attribute created_at
|
8
|
+
# @return [Time] creation timestamp
|
9
|
+
# @!attribute updated_at
|
10
|
+
# @return [Time] update timestamp
|
11
|
+
# @!attribute test_session_id
|
12
|
+
# @return [String]
|
13
|
+
# @!attribute status
|
14
|
+
# @return [String]
|
15
|
+
# @!attribute test_id
|
16
|
+
# @return [String, nil] id of the `Test` this result belongs to
|
17
|
+
# @!attribute test
|
18
|
+
# @return [Test, nil] the `Test` this result belongs to
|
19
|
+
# @!attribute test_group_id
|
20
|
+
# @return [String, nil] id of the `TestGroup` this result belongs to
|
21
|
+
# @!attribute test_group
|
22
|
+
# @return [TestGroup, nil] the `TestGroup` this result belongs to
|
23
|
+
# @!attribute test_suite_id
|
24
|
+
# @return [String, nil] id of the `TestSuite` this result belongs to
|
25
|
+
# @!attribute test_suite
|
26
|
+
# @return [TestSuite, nil] the `TestSuite` this result belongs to
|
27
|
+
# @!attribute inputs
|
28
|
+
# @return [Array<Hash>]
|
29
|
+
# @!attribute results
|
30
|
+
# @return [Array<Inferno::Entities::Result>]
|
31
|
+
# @!attribute identifier
|
32
|
+
# @return [String, nil] identfier for a waiting `TestRun`
|
33
|
+
# @!attribute wait_timeout
|
11
34
|
class TestRun < Entity
|
12
35
|
STATUS_OPTIONS = ['queued', 'running', 'waiting', 'done'].freeze
|
13
36
|
ATTRIBUTES = [
|
@@ -2,17 +2,23 @@ module Inferno
|
|
2
2
|
module Entities
|
3
3
|
# A `TestSession` represents an individual testing session.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
5
|
+
# @!attribute id
|
6
|
+
# @return [String] id of the session
|
7
|
+
# @!attribute created_at
|
8
|
+
# @return [Time] creation timestamp
|
9
|
+
# @!attribute updated_at
|
10
|
+
# @return [Time] update timestamp
|
11
|
+
# @!attribute test_suite_id
|
12
|
+
# @return [String] id of the `TestSuite` being run in this session
|
13
|
+
# @!attribute test_suite
|
14
|
+
# @return [Inferno::Entities::TestSuite] the `TestSuite` being run in this
|
15
|
+
# session
|
16
|
+
# @!attribute test_runs
|
17
|
+
# @return [Array<Inferno::Entities::TestRun>] the `TestRuns` associated
|
18
|
+
# with this session
|
19
|
+
# @!attribute results
|
20
|
+
# @return [Array<Inferno::Entities::TestResult>] the `TestResults`
|
13
21
|
# associated with this session
|
14
|
-
# @attr_accessor [Array<Inferno::Entities::TestResult>] results the
|
15
|
-
# `TestResults` associated with this session
|
16
22
|
class TestSession < Entity
|
17
23
|
ATTRIBUTES = [:id, :created_at, :updated_at, :test_suite_id, :test_suite, :test_runs, :results].freeze
|
18
24
|
|
@@ -1 +1 @@
|
|
1
|
-
(self.webpackChunkinferno_web_app=self.webpackChunkinferno_web_app||[]).push([[217],{3217:(t,e,n)=>{
|
1
|
+
"use strict";(self.webpackChunkinferno_web_app=self.webpackChunkinferno_web_app||[]).push([[217],{3217:(t,e,n)=>{n.r(e),n.d(e,{getCLS:()=>v,getFCP:()=>g,getFID:()=>h,getLCP:()=>y,getTTFB:()=>F});var i,a,r=function(){return"".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)},o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return{name:t,value:e,delta:0,entries:[],id:r(),isFinal:!1}},s=function(t,e){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var n=new PerformanceObserver((function(t){return t.getEntries().map(e)}));return n.observe({type:t,buffered:!0}),n}}catch(t){}},u=!1,c=!1,p=function(t){u=!t.persisted},f=function(){addEventListener("pagehide",p),addEventListener("beforeunload",(function(){}))},l=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];c||(f(),c=!0),addEventListener("visibilitychange",(function(e){var n=e.timeStamp;"hidden"===document.visibilityState&&t({timeStamp:n,isUnloading:u})}),{capture:!0,once:e})},d=function(t,e,n,i){var a;return function(){n&&e.isFinal&&n.disconnect(),e.value>=0&&(i||e.isFinal||"hidden"===document.visibilityState)&&(e.delta=e.value-(a||0),(e.delta||e.isFinal||void 0===a)&&(t(e),a=e.value))}},v=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=o("CLS",0),a=function(t){t.hadRecentInput||(i.value+=t.value,i.entries.push(t),e())},r=s("layout-shift",a);r&&(e=d(t,i,r,n),l((function(t){var n=t.isUnloading;r.takeRecords().map(a),n&&(i.isFinal=!0),e()})))},m=function(){return void 0===i&&(i="hidden"===document.visibilityState?0:1/0,l((function(t){var e=t.timeStamp;return i=e}),!0)),{get timeStamp(){return i}}},g=function(t){var e,n=o("FCP"),i=m(),a=s("paint",(function(t){"first-contentful-paint"===t.name&&t.startTime<i.timeStamp&&(n.value=t.startTime,n.isFinal=!0,n.entries.push(t),e())}));a&&(e=d(t,n,a))},h=function(t){var e=o("FID"),n=m(),i=function(t){t.startTime<n.timeStamp&&(e.value=t.processingStart-t.startTime,e.entries.push(t),e.isFinal=!0,r())},a=s("first-input",i),r=d(t,e,a);a?l((function(){a.takeRecords().map(i),a.disconnect()}),!0):window.perfMetrics&&window.perfMetrics.onFirstInputDelay&&window.perfMetrics.onFirstInputDelay((function(t,i){i.timeStamp<n.timeStamp&&(e.value=t,e.isFinal=!0,e.entries=[{entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+t}],r())}))},S=function(){return a||(a=new Promise((function(t){return["scroll","keydown","pointerdown"].map((function(e){addEventListener(e,t,{once:!0,passive:!0,capture:!0})}))}))),a},y=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=o("LCP"),a=m(),r=function(t){var n=t.startTime;n<a.timeStamp?(i.value=n,i.entries.push(t)):i.isFinal=!0,e()},u=s("largest-contentful-paint",r);if(u){e=d(t,i,u,n);var c=function(){i.isFinal||(u.takeRecords().map(r),i.isFinal=!0,e())};S().then(c),l(c,!0)}},F=function(t){var e,n=o("TTFB");e=function(){try{var e=performance.getEntriesByType("navigation")[0]||function(){var t=performance.timing,e={entryType:"navigation",startTime:0};for(var n in t)"navigationStart"!==n&&"toJSON"!==n&&(e[n]=Math.max(t[n]-t.navigationStart,0));return e}();n.value=n.delta=e.responseStart,n.entries=[e],n.isFinal=!0,t(n)}catch(t){}},"complete"===document.readyState?setTimeout(e,0):addEventListener("pageshow",e)}}}]);
|