@coveord/plasma-mantine 56.5.0 → 56.8.1

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.
Files changed (62) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/.turbo/turbo-test.log +107 -105
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/components/Badge/Badge.d.ts.map +1 -1
  5. package/dist/cjs/components/Badge/Badge.js +10 -8
  6. package/dist/cjs/components/Badge/Badge.js.map +1 -1
  7. package/dist/cjs/components/CodeEditor/languages/xml.d.ts.map +1 -1
  8. package/dist/cjs/components/CodeEditor/languages/xml.js.map +1 -1
  9. package/dist/cjs/components/Collection/enhanceWithCollectionProps.d.ts.map +1 -1
  10. package/dist/cjs/components/Collection/enhanceWithCollectionProps.js.map +1 -1
  11. package/dist/cjs/components/DateRangePicker/DateRange.module.css +4 -0
  12. package/dist/cjs/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  13. package/dist/cjs/components/DateRangePicker/DateRangePicker.js +2 -1
  14. package/dist/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
  15. package/dist/cjs/components/RadioCard/RadioCard.d.ts +26 -0
  16. package/dist/cjs/components/RadioCard/RadioCard.d.ts.map +1 -0
  17. package/dist/cjs/components/RadioCard/RadioCard.js +82 -0
  18. package/dist/cjs/components/RadioCard/RadioCard.js.map +1 -0
  19. package/dist/cjs/index.d.ts +1 -0
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/index.js +4 -0
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/styles/RadioCard.module.css +44 -0
  24. package/dist/cjs/theme/Plasmantine.d.ts +1 -1
  25. package/dist/cjs/theme/Plasmantine.d.ts.map +1 -1
  26. package/dist/cjs/theme/Plasmantine.js +2 -2
  27. package/dist/cjs/theme/Plasmantine.js.map +1 -1
  28. package/dist/esm/components/Badge/Badge.d.ts.map +1 -1
  29. package/dist/esm/components/Badge/Badge.js +11 -7
  30. package/dist/esm/components/Badge/Badge.js.map +1 -1
  31. package/dist/esm/components/CodeEditor/languages/xml.d.ts.map +1 -1
  32. package/dist/esm/components/CodeEditor/languages/xml.js.map +1 -1
  33. package/dist/esm/components/Collection/enhanceWithCollectionProps.d.ts.map +1 -1
  34. package/dist/esm/components/Collection/enhanceWithCollectionProps.js.map +1 -1
  35. package/dist/esm/components/DateRangePicker/DateRange.module.css +4 -0
  36. package/dist/esm/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  37. package/dist/esm/components/DateRangePicker/DateRangePicker.js +2 -1
  38. package/dist/esm/components/DateRangePicker/DateRangePicker.js.map +1 -1
  39. package/dist/esm/components/RadioCard/RadioCard.d.ts +26 -0
  40. package/dist/esm/components/RadioCard/RadioCard.d.ts.map +1 -0
  41. package/dist/esm/components/RadioCard/RadioCard.js +63 -0
  42. package/dist/esm/components/RadioCard/RadioCard.js.map +1 -0
  43. package/dist/esm/index.d.ts +1 -0
  44. package/dist/esm/index.d.ts.map +1 -1
  45. package/dist/esm/index.js +2 -0
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/styles/RadioCard.module.css +44 -0
  48. package/dist/esm/theme/Plasmantine.d.ts +1 -1
  49. package/dist/esm/theme/Plasmantine.d.ts.map +1 -1
  50. package/dist/esm/theme/Plasmantine.js +2 -2
  51. package/dist/esm/theme/Plasmantine.js.map +1 -1
  52. package/package.json +19 -19
  53. package/src/components/Badge/Badge.tsx +12 -2
  54. package/src/components/CodeEditor/languages/xml.ts +2 -1
  55. package/src/components/Collection/enhanceWithCollectionProps.ts +2 -2
  56. package/src/components/DateRangePicker/DateRange.module.css +4 -0
  57. package/src/components/DateRangePicker/DateRangePicker.tsx +2 -1
  58. package/src/components/RadioCard/RadioCard.tsx +73 -0
  59. package/src/components/RadioCard/__tests__/RadioCard.component.spec.tsx +25 -0
  60. package/src/index.ts +3 -0
  61. package/src/styles/RadioCard.module.css +44 -0
  62. package/src/theme/Plasmantine.tsx +3 -3
@@ -1,9 +1,9 @@
1
1
 
2
- > @coveord/plasma-mantine@56.4.0 build /home/runner/work/plasma/plasma/packages/mantine
2
+ > @coveord/plasma-mantine@56.8.0 build /home/runner/work/plasma/plasma/packages/mantine
3
3
  > node ../../scripts/build
4
4
 
5
- (node:3912) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
5
+ (node:3593) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
6
6
  (Use `node --trace-deprecation ...` to show where the warning was created)
7
- Successfully compiled: 204 files, copied 58 files with swc (542.71ms)
8
- Successfully compiled: 204 files, copied 58 files with swc (604.87ms)
7
+ Successfully compiled: 205 files, copied 58 files with swc (483.26ms)
8
+ Successfully compiled: 205 files, copied 58 files with swc (631.76ms)
9
9
 
@@ -1,115 +1,117 @@
1
1
 
2
- > @coveord/plasma-mantine@56.4.0 test /home/runner/work/plasma/plasma/packages/mantine
2
+ > @coveord/plasma-mantine@56.8.0 test /home/runner/work/plasma/plasma/packages/mantine
3
3
  > cross-env TZ=UTC vitest run --silent
4
4
 
5
5
 
6
-  RUN  v4.0.8 /home/runner/work/plasma/plasma/packages/mantine
6
+  RUN  v4.0.15 /home/runner/work/plasma/plasma/packages/mantine
7
7
 
8
- ✓ src/components/Collection/__tests__/Collection.spec.tsx (16 tests) 2070ms
9
- ✓ src/components/Table/__tests__/Table.spec.tsx (12 tests) 2872ms
10
- ✓ reset row selection when user click outside the table  310ms
11
- ✓ does not reset row selection when clicking within one of the specified additionalRootNodes, even if it is outside the table  343ms
12
- ✓ handles switching layout  447ms
13
- ✓ does not clear the row selection when clicking outside the table  386ms
14
- ✓ unselects all the selected rows when clicking on the the unselect button from the table header  518ms
15
- ✓ src/components/Table/layouts/__tests__/RowLayout.spec.tsx (17 tests) 4325ms
16
- ✓ renders the data using the RowLayout by default  562ms
17
- ✓ closes the opened collapsible when using the accordion column and the user expand a different row  477ms
18
- ✓ toggles row selection when clicking on a selected row  384ms
19
- ✓ prevents row selection if disableRowSelection is true  438ms
20
- ✓ prevents click on checkboxes if disableRowSelection is true  307ms
21
- ✓ src/components/Table/__tests__/TablePagination.spec.tsx (7 tests) 1237ms
22
- ✓ calculates the number of pages based on the pageSize and the total number of entries  407ms
23
- ✓ changes the page when the pagination is client side  326ms
24
- ✓ src/components/Table/__tests__/TableColumnsSelector.spec.tsx (13 tests) 5392ms
25
- ✓ render the edit button in the table header  431ms
26
- ✓ renders all columns in the dropdown, except the collapsible and the multiselectRow by default  619ms
27
- ✓ renders all checkboxes checked by default  581ms
28
- ✓ renders a disabled checked checkbox for columns that are always visible  762ms
29
- ✓ renders unchecked checkboxes for the columns that are not visible in the inital state of the table  510ms
30
- ✓ renders disabled checkboxes when the maxSelectableColumns is set and the maximum number of columns is checked  473ms
31
- ✓ renders a tooltip when the maxSelectableColumns is set and the maximum number of columns is checked and the user hover a disabled checkbox  486ms
32
- ✓ renders the footer when maxSelectableColumns is defined and footer is defined  318ms
33
- ✓ sets the current visible column ids in the url  533ms
34
- ✓ determines the initial visible columns from the url  372ms
35
- ✓ src/components/Table/__tests__/TableActions.spec.tsx (6 tests) 3381ms
36
- ✓ displays the actions when the row is selected  598ms
37
- ✓ displays the secondary actions when the row is selected and the user clicks on more  1483ms
38
- ✓ passes down an array of selected rows  709ms
39
- ✓ src/hooks/__tests__/use-url-synced-state.unit.spec.ts (70 tests) 230ms
40
- ✓ src/components/InlineConfirm/__tests__/InlineConfirm.spec.tsx (8 tests) 1341ms
41
- ✓ calls the onClick prop when clicking on the menu item  347ms
42
- ✓ src/components/Table/__tests__/TablePerPage.spec.tsx (7 tests) 1290ms
43
- ✓ displays the label  349ms
44
- ✓ src/components/Table/__tests__/TableFilter.spec.tsx (6 tests) 1656ms
45
- ✓ displays the placeholder  338ms
46
- ✓ goes back to the first page when changing the filter  447ms
47
- ✓ does not unselect rows that get filtered out  494ms
48
- ✓ src/components/CodeEditor/__tests__/CodeEditor.spec.tsx (9 tests | 1 skipped) 1034ms
49
- ✓ renders the monaco editor, a copy to clipboard button and a search button  442ms
50
- ✓ src/components/DateRangePicker/__tests__/DateRangePickerInlineCalendar.spec.tsx (7 tests | 1 skipped) 5338ms
51
- ✓ calls onApply when the user clicks on the apply button  877ms
52
- ✓ calls onCancel when the user clicks on the cancel button  403ms
53
- ✓ calls onApply with the selected dates when clicking in the calendar  1481ms
54
- ✓ set end date same as start date if only one date is selected when clicking in the calendar  890ms
55
- ✓ calls onApply with the selected dates when typing in the inputs  1598ms
56
- ✓ src/components/Header/__tests__/Header.spec.tsx (8 tests) 498ms
57
- ✓ src/components/DateRangePicker/__tests__/DateRangePicker.spec.tsx (18 tests) 17671ms
58
- ✓ opens popover when input is clicked  486ms
59
- ✓ calls onChange when a date range is applied  3564ms
60
- ✓ closes popover when Cancel is clicked  641ms
61
- ✓ calls onCancel when Cancel button is clicked  641ms
62
- ✓ applies the selected date range in uncontrolled mode  3399ms
63
- ✓ applies the selected date range in controlled mode  3615ms
64
- ✓ renders preset options in the popover  1150ms
65
- ✓ sets the selected date range in the url  2680ms
66
- ✓ calls onOpenedChange when popover state changes  663ms
67
- ✓ src/components/Table/__tests__/TablePredicate.spec.tsx (3 tests) 3184ms
68
- ✓ goes back to the first page when changing the predicate  1846ms
69
- ✓ sets the current predicate value in the url using the predicate id as key  1151ms
70
- ✓ src/components/Table/__tests__/Th.spec.tsx (4 tests) 1049ms
71
- ✓ displays the sort icon for every sortable column  415ms
72
- ✓ changes the sort icon when clicking on a table header  397ms
73
- ✓ src/components/DateRangePicker/__tests__/DateRangePickerPopoverCalendar.spec.tsx (4 tests | 2 skipped) 4183ms
74
- ✓ calls onApply with the selected dates when clicking in the calendar  4076ms
75
- ✓ src/components/Table/__tests__/TableDateRangePicker.spec.tsx (3 tests) 4928ms
76
- ✓ displays the initial dates  432ms
77
- ✓ sets the selected date range in the url  4399ms
78
- ✓ src/components/DateTimeRangePicker/__tests__/DateTimeRangePicker.spec.tsx (3 tests) 4840ms
79
- ✓ updates with the selected dates when choosing a preset  1231ms
80
- ✓ can change the date and time  3504ms
81
- ✓ src/components/Table/__tests__/TableCollapsibleColumn.spec.tsx (2 tests) 800ms
82
- ✓ expands the rows when the user clicks on a cell  661ms
83
- ✓ src/components/DateRangePicker/__tests__/EditableDateRangePicker.spec.tsx (3 tests) 4072ms
84
- ✓ renders an input for the start and an input for the end  395ms
85
- ✓ updates when editing values  1584ms
86
- ✓ accepts minDate and maxDate props for start and end inputs  2091ms
87
- ✓ src/components/Table/__tests__/TableLastUpdated.spec.tsx (3 tests) 436ms
88
- ✓ src/components/Button/__tests__/Button.spec.tsx (4 tests) 517ms
89
- ✓ src/theme/__tests__/mergeCSSVariablesResolvers.spec.ts (3 tests) 7ms
8
+ ✓ src/components/Collection/__tests__/Collection.spec.tsx (16 tests) 1936ms
9
+ ✓ src/components/Table/__tests__/Table.spec.tsx (12 tests) 2720ms
10
+ ✓ reset row selection when user click outside the table  320ms
11
+ ✓ handles switching layout  487ms
12
+ ✓ does not clear the row selection when clicking outside the table  354ms
13
+ ✓ unselects all the selected rows when clicking on the the unselect button from the table header  375ms
14
+ ✓ src/components/Table/layouts/__tests__/RowLayout.spec.tsx (17 tests) 4182ms
15
+ ✓ renders the data using the RowLayout by default  515ms
16
+ ✓ closes the opened collapsible when using the accordion column and the user expand a different row  407ms
17
+ ✓ toggles row selection when clicking on a selected row  349ms
18
+ ✓ allows selection of a different row if row selection is forced  347ms
19
+ ✓ prevents row selection if disableRowSelection is true  407ms
20
+ ✓ src/components/Table/__tests__/TablePagination.spec.tsx (7 tests) 1235ms
21
+ ✓ calculates the number of pages based on the pageSize and the total number of entries  349ms
22
+ ✓ changes the page when the pagination is client side  330ms
23
+ ✓ changes page when the current page is greater than the total number of pages  309ms
24
+ ✓ src/components/Table/__tests__/TableColumnsSelector.spec.tsx (13 tests) 5534ms
25
+ ✓ render the edit button in the table header  415ms
26
+ ✓ renders all columns in the dropdown, except the collapsible and the multiselectRow by default  561ms
27
+ ✓ renders all checkboxes checked by default  614ms
28
+ ✓ renders a disabled checked checkbox for columns that are always visible  729ms
29
+ ✓ renders unchecked checkboxes for the columns that are not visible in the inital state of the table  503ms
30
+ ✓ renders disabled checkboxes when the maxSelectableColumns is set and the maximum number of columns is checked  603ms
31
+ ✓ renders a tooltip when the maxSelectableColumns is set and the maximum number of columns is checked and the user hover a disabled checkbox  530ms
32
+ ✓ sets the current visible column ids in the url  578ms
33
+ ✓ determines the initial visible columns from the url  407ms
34
+ ✓ src/components/Table/__tests__/TableActions.spec.tsx (6 tests) 3510ms
35
+ ✓ displays the actions when the row is selected  679ms
36
+ ✓ displays the secondary actions when the row is selected and the user clicks on more  1495ms
37
+ ✓ keeps the selected row data in sync with the data prop  329ms
38
+ ✓ passes down an array of selected rows  702ms
39
+ ✓ src/hooks/__tests__/use-url-synced-state.unit.spec.ts (70 tests) 148ms
40
+ ✓ src/components/InlineConfirm/__tests__/InlineConfirm.spec.tsx (8 tests) 1276ms
41
+ ✓ calls the onClick prop when clicking on the menu item  320ms
42
+ ✓ src/components/Table/__tests__/TablePerPage.spec.tsx (7 tests) 1174ms
43
+ ✓ displays the label  335ms
44
+ ✓ src/components/Table/__tests__/TableFilter.spec.tsx (6 tests) 1580ms
45
+ ✓ displays the placeholder  347ms
46
+ ✓ goes back to the first page when changing the filter  378ms
47
+ ✓ does not unselect rows that get filtered out  500ms
48
+ ✓ src/components/CodeEditor/__tests__/CodeEditor.spec.tsx (9 tests | 1 skipped) 904ms
49
+ ✓ renders the monaco editor, a copy to clipboard button and a search button  415ms
50
+ ✓ src/components/DateRangePicker/__tests__/DateRangePickerInlineCalendar.spec.tsx (7 tests | 1 skipped) 5160ms
51
+ ✓ calls onApply when the user clicks on the apply button  976ms
52
+ ✓ calls onCancel when the user clicks on the cancel button  399ms
53
+ ✓ calls onApply with the selected dates when clicking in the calendar  1352ms
54
+ ✓ set end date same as start date if only one date is selected when clicking in the calendar  913ms
55
+ ✓ calls onApply with the selected dates when typing in the inputs  1451ms
56
+ ✓ src/components/Header/__tests__/Header.spec.tsx (8 tests) 592ms
57
+ ✓ renders a heading of level 1 with the specified children within  311ms
58
+ ✓ src/components/DateRangePicker/__tests__/DateRangePicker.spec.tsx (18 tests) 17460ms
59
+ ✓ opens popover when input is clicked  461ms
60
+ ✓ calls onChange when a date range is applied  3355ms
61
+ ✓ closes popover when Cancel is clicked  679ms
62
+ ✓ calls onCancel when Cancel button is clicked  639ms
63
+ ✓ applies the selected date range in uncontrolled mode  3310ms
64
+ ✓ applies the selected date range in controlled mode  3929ms
65
+ ✓ renders preset options in the popover  1001ms
66
+ ✓ sets the selected date range in the url  2798ms
67
+ ✓ calls onOpenedChange when popover state changes  555ms
68
+ ✓ src/components/Table/__tests__/TablePredicate.spec.tsx (3 tests) 3277ms
69
+ ✓ goes back to the first page when changing the predicate  1825ms
70
+ ✓ sets the current predicate value in the url using the predicate id as key  1246ms
71
+ ✓ src/components/Table/__tests__/Th.spec.tsx (4 tests) 927ms
72
+ ✓ displays the sort icon for every sortable column  345ms
73
+ ✓ changes the sort icon when clicking on a table header  328ms
74
+ ✓ src/components/DateRangePicker/__tests__/DateRangePickerPopoverCalendar.spec.tsx (4 tests | 2 skipped) 4319ms
75
+ ✓ calls onApply with the selected dates when clicking in the calendar  4185ms
76
+ ✓ src/components/Table/__tests__/TableDateRangePicker.spec.tsx (3 tests) 4758ms
77
+ ✓ displays the initial dates  467ms
78
+ ✓ sets the selected date range in the url  4201ms
79
+ ✓ src/components/DateTimeRangePicker/__tests__/DateTimeRangePicker.spec.tsx (3 tests) 4894ms
80
+ ✓ updates with the selected dates when choosing a preset  1244ms
81
+ ✓ can change the date and time  3482ms
82
+ ✓ src/components/Table/__tests__/TableCollapsibleColumn.spec.tsx (2 tests) 827ms
83
+ ✓ expands the rows when the user clicks on a cell  611ms
84
+ ✓ src/components/DateRangePicker/__tests__/EditableDateRangePicker.spec.tsx (3 tests) 3815ms
85
+ ✓ renders an input for the start and an input for the end  332ms
86
+ ✓ updates when editing values  1555ms
87
+ ✓ accepts minDate and maxDate props for start and end inputs  1924ms
88
+ ✓ src/components/Table/__tests__/TableLastUpdated.spec.tsx (3 tests) 493ms
89
+ ✓ src/components/Button/__tests__/Button.spec.tsx (4 tests) 563ms
90
+ ✓ src/theme/__tests__/mergeCSSVariablesResolvers.spec.ts (3 tests) 4ms
90
91
  ↓ src/utils/__tests__/overrideComponent.spec.tsx (1 test | 1 skipped)
91
- ✓ src/components/Button/__tests__/ButtonWithDisabledTooltip.spec.tsx (3 tests | 1 skipped) 484ms
92
- ✓ shows a tooltip when hovering over the disabled button  443ms
93
- ✓ src/components/DateRangePicker/__tests__/DateRangePickerPresetSelect.spec.tsx (2 tests) 1037ms
94
- ✓ calls onChange when selecting a preset  844ms
95
- ✓ src/components/LastUpdated/__tests__/LastUpdated.spec.tsx (5 tests) 431ms
96
- ✓ src/hooks/__tests__/useControlledList.spec.tsx (3 tests) 29ms
97
- ✓ src/components/Prompt/__tests__/Prompt.spec.tsx (6 tests) 743ms
98
- ✓ displays the title, body and close button  411ms
99
- ✓ src/components/CopyToClipboard/__tests__/CopyToClipboard.spec.tsx (3 tests) 549ms
92
+ ✓ src/components/Button/__tests__/ButtonWithDisabledTooltip.spec.tsx (3 tests | 1 skipped) 483ms
93
+ ✓ shows a tooltip when hovering over the disabled button  426ms
94
+ ✓ src/components/DateRangePicker/__tests__/DateRangePickerPresetSelect.spec.tsx (2 tests) 944ms
95
+ ✓ calls onChange when selecting a preset  775ms
96
+ ✓ src/components/LastUpdated/__tests__/LastUpdated.spec.tsx (5 tests) 452ms
97
+ ✓ src/hooks/__tests__/useControlledList.spec.tsx (3 tests) 33ms
98
+ ✓ src/components/Prompt/__tests__/Prompt.spec.tsx (6 tests) 744ms
99
+ ✓ displays the title, body and close button  329ms
100
+ ✓ src/components/CopyToClipboard/__tests__/CopyToClipboard.spec.tsx (3 tests) 601ms
100
101
  ✓ src/theme/__tests__/plasmaCSSVariablesResolver.spec.ts (1 test) 6ms
101
- ✓ src/components/BrowserPreview/__tests__/BrowserPreview.spec.tsx (4 tests) 581ms
102
- ✓ renders the specified text as the header tooltip content  463ms
103
- ✓ src/components/ChildForm/__tests__/ChildForm.spec.tsx (3 tests) 360ms
104
- ✓ src/components/Modal/__tests__/ModalFooter.spec.tsx (2 tests) 93ms
105
- ✓ src/components/Modal/__tests__/Modal.spec.tsx (2 tests) 242ms
106
- ✓ src/components/Menu/__tests__/Menu.spec.tsx (1 test) 283ms
107
- ✓ src/components/StickyFooter/__tests__/StickyFooter.spec.tsx (1 test) 60ms
108
- ✓ src/components/CodeEditor/search/__tests__/Search.unit.spec.tsx (1 test) 259ms
102
+ ✓ src/components/BrowserPreview/__tests__/BrowserPreview.spec.tsx (4 tests) 554ms
103
+ ✓ renders the specified text as the header tooltip content  455ms
104
+ ✓ src/components/ChildForm/__tests__/ChildForm.spec.tsx (3 tests) 328ms
105
+ ✓ src/components/Modal/__tests__/Modal.spec.tsx (2 tests) 269ms
106
+ ✓ src/components/RadioCard/__tests__/RadioCard.component.spec.tsx (3 tests) 263ms
107
+ ✓ src/components/Modal/__tests__/ModalFooter.spec.tsx (2 tests) 76ms
108
+ ✓ src/components/Menu/__tests__/Menu.spec.tsx (1 test) 294ms
109
+ ✓ src/components/CodeEditor/search/__tests__/Search.unit.spec.tsx (1 test) 292ms
110
+ ✓ src/components/StickyFooter/__tests__/StickyFooter.spec.tsx (1 test) 69ms
109
111
  ✓ src/components/BlankSlate/__tests__/BlankSlate.spec.tsx (1 test) 49ms
110
112
 
111
-  Test Files  39 passed | 1 skipped (40)
112
-  Tests  269 passed | 6 skipped (275)
113
-  Start at  20:20:12
114
-  Duration  57.74s (transform 1.66s, setup 9.36s, collect 47.01s, tests 77.55s, environment 28.40s, prepare 1.04s)
113
+  Test Files  40 passed | 1 skipped (41)
114
+  Tests  272 passed | 6 skipped (278)
115
+  Start at  20:22:56
116
+  Duration  56.80s (transform 1.85s, setup 9.31s, import 45.42s, tests 76.74s, environment 29.01s)
115
117