Skip to content

Commit c88f714

Browse files
committed
Merge branch 'release/2.16.2'
2 parents 95856fb + 5b1282c commit c88f714

File tree

31 files changed

+217
-93
lines changed

31 files changed

+217
-93
lines changed

CHANGES.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## Version 2.16.2
4+
5+
* Add optional compact view for tests - can be toggled both from the results bar and through the 'c'
6+
keyboard shortcut
7+
* Session overview in test view is now a user preference that can be set to show or hide the session
8+
details by default
9+
* Restored accidentally removed metadata links for tests
10+
* Bug fixes
11+
312
## Version 2.16.1
413

514
* UI fixes and corrections

flask_app/app.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ DEFAULT_PREFERENCES:
1717
time_format: "DD/MM/YYYY HH:mm:ss"
1818
start_page: 'default'
1919
show_avatars: false
20+
show_tes_session_overviews: false
2021

2122
display_names:
2223
subject: subject

integration_tests/ui/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,5 +117,5 @@ def assert_no_element(self, css_selector):
117117
def find_session_link(self, session):
118118
self.driver.refresh()
119119
return self.driver.find_element_by_xpath(
120-
f"//div[@data-session-id='{session.id}']"
120+
f"//a[@data-session-id='{session.id}']"
121121
)

scripts/travis_version_fix.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,6 @@
1010

1111
with open('flask_app/__version__.py', 'w') as f:
1212
print(f'__version__ = "{version}"', file=f)
13+
14+
with open('webapp/app/utils/ui_version.js', 'w') as f:
15+
print(f'export default "{version}";', file=f)

webapp/app/application/route.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { hash } from "rsvp";
2+
import UI_VERSION from "../utils/ui_version";
23
import { inject as service } from "@ember/service";
34
import Route from "@ember/routing/route";
45
import ApplicationRouteMixin from "ember-simple-auth/mixins/application-route-mixin";
@@ -55,5 +56,6 @@ export default Route.extend(ApplicationRouteMixin, {
5556
setupController(controller, model) {
5657
controller.setProperties(model);
5758
controller.set("version", model.runtime_config.version);
59+
controller.set("ui_version", UI_VERSION);
5860
},
5961
});

webapp/app/application/template.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
<footer class="footer">
7979
<div class="container text-center">
8080
<p class="text-muted">
81-
Backslash {{version}}
81+
Backslash {{version}} (UI {{ui_version}})
8282
</p>
8383
</div>
8484
</footer>

webapp/app/components/keyboard-shortcuts/component.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ let _keys = [
1515
action: "toggle_human_times",
1616
description: "Toggles human-readable times",
1717
},
18+
{
19+
key: "c",
20+
action: "toggle_compact_view",
21+
description: "Toggles compact view where available",
22+
},
1823
{ key: "a", action: "filter_none", description: "Show all entities" },
1924
{
2025
key: "f",
@@ -172,6 +177,16 @@ export default Component.extend({
172177
this.get("display").toggleProperty("humanize_times");
173178
},
174179

180+
toggle_compact_view() {
181+
let approute = getOwner(this).lookup("route:application");
182+
let appcontroller = getOwner(this).lookup("controller:application");
183+
let path = appcontroller.currentPath;
184+
let controller = approute.controllerFor(path);
185+
if (controller.get("compact_view") !== undefined) {
186+
controller.toggleProperty("compact_view");
187+
}
188+
},
189+
175190
filter_only_failed() {
176191
this._do_if_in(_FILTERABLE_VIEWS, function(controller) {
177192
controller.filter_all_except("unsuccessful");
@@ -201,9 +216,8 @@ export default Component.extend({
201216
let appcontroller = owner.lookup("controller:application");
202217
let current_route = appcontroller.currentPath;
203218
if (current_route.startsWith("session.test.")) {
204-
owner
205-
.lookup("controller:session.test")
206-
.toggleProperty("show_session_overview");
219+
let controller = owner.lookup("controller:session.test");
220+
controller.toggleProperty("show_session_overview");
207221
}
208222
},
209223
},
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
{{results-nav page=(mut page) has_next=meta.has_more num_pages=meta.num_pages page_size=(mut page_size) filter_controller=filter_controller sort=(mut sort) sort_options=sort_options}}
1+
{{results-nav page=(mut page) has_next=meta.has_more num_pages=meta.num_pages page_size=(mut page_size) filter_controller=filter_controller sort=(mut sort) sort_options=sort_options compact_view=(mut compact_view) show_settings=true}}
22

33
{{#each results as |result|}}
4-
{{component (concat result.type "-item") item=result show_subjects=show_subjects session_model=session_model show_user=show_users}}
4+
{{component (concat result.type "-item") item=result show_subjects=show_subjects session_model=session_model show_user=show_users compact_view=compact_view}}
55
{{else}}
66
<div class="text-center faint">
77
No results found
88
</div>
99
{{/each}}
1010

11-
{{results-nav page=(mut page) has_next=meta.has_more num_pages=meta.num_pages }}
11+
{{results-nav page=(mut page) has_next=meta.has_more num_pages=meta.num_pages show_settings=false}}

webapp/app/components/results-nav/component.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ export default Component.extend({
1313
page: 1,
1414
has_next: false,
1515
num_pages: null,
16-
16+
show_settings: true,
1717
filter_controller: null,
18+
compact_view: null,
1819

1920
has_last: notEmpty("num_pages"),
2021
has_prev: gt("page", 1),

webapp/app/components/results-nav/template.hbs

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{#if filter_controller}}
22

33
{{#bs-dropdown classNames="justify-content-center align-self-center mr-2" closeOnMenuClick=false as |dd|}}
4-
{{#dd.toggle classNames="faint nodecoration"}}{{fa-icon "filter"}} <span class="caret"></span>{{/dd.toggle}}
4+
{{#dd.toggle classNames="faint nodecoration"}}{{fa-icon "filter"}} <span class="d-none d-lg-inline-block">Filter</span> <span class="caret"></span>{{/dd.toggle}}
55
{{#dd.menu as |menu|}}
66

77
{{#each filters as |filter|}}
@@ -36,23 +36,38 @@
3636
{{/bs-dropdown}}
3737
{{/if}}
3838

39-
{{#bs-dropdown classNames="justify-content-center align-self-center mr-2" as |dd|}}
40-
{{#dd.toggle classNames="faint nodecoration"}}{{fa-icon "cog"}} <span class="d-none d-lg-inline-block">
41-
Settings
42-
</span> <span class="caret"></span>{{/dd.toggle}}
43-
{{#dd.menu as |menu|}}
44-
{{#menu.item}}
45-
<a class="dropdown-item clickable" {{action (toggle "humanize_times" display)}}>
46-
{{#if display.humanize_times}}
47-
{{fa-icon "check" fixedWidth=true}}
48-
{{else}}
49-
{{fa-icon "fw"}}
50-
{{/if}}
51-
Human-friendly times
52-
</a>
53-
{{/menu.item}}
54-
{{/dd.menu}}
55-
{{/bs-dropdown}}
39+
{{#if show_settings}}
40+
{{#bs-dropdown classNames="justify-content-center align-self-center mr-2" as |dd|}}
41+
{{#dd.toggle classNames="faint nodecoration"}}{{fa-icon "cog"}} <span class="d-none d-lg-inline-block">
42+
Settings
43+
</span> <span class="caret"></span>{{/dd.toggle}}
44+
{{#dd.menu as |menu|}}
45+
{{#menu.item}}
46+
<a class="dropdown-item clickable" {{action (toggle "humanize_times" display)}}>
47+
{{#if display.humanize_times}}
48+
{{fa-icon "check" fixedWidth=true}}
49+
{{else}}
50+
{{fa-icon "fw"}}
51+
{{/if}}
52+
Human-friendly times
53+
</a>
54+
{{/menu.item}}
55+
56+
{{#if (exists compact_view)}}
57+
{{#menu.item}}
58+
<a class="dropdown-item clickable" {{action (toggle "compact_view" this)}}>
59+
{{#if compact_view}}
60+
{{fa-icon "check" fixedWidth=true}}
61+
{{else}}
62+
{{fa-icon "fw"}}
63+
{{/if}}
64+
Compact view
65+
</a>
66+
{{/menu.item}}
67+
{{/if}}
68+
{{/dd.menu}}
69+
{{/bs-dropdown}}
70+
{{/if}}
5671

5772
{{#if sort_options}}
5873
{{#bs-dropdown classNames="justify-content-center align-self-center mr-2" as |dd|}}

webapp/app/components/session-breakdown/template.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
{{# with (add session.num_failed_tests session.num_error_tests) as |num_errors|}}
1515
<div class="failed">
1616
{{#bs-tooltip}}
17-
{{session.num_errors}} unsuccessful tests
17+
{{num_errors}} unsuccessful tests
1818
{{/bs-tooltip}}
1919
<i class="fa fa-times"></i> {{num_errors}}
2020
</div>

webapp/app/components/session-item/component.js

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,24 @@ import Component from "@ember/component";
55

66
export default Component.extend({
77
display: service(),
8-
router: service(),
8+
_router: service("router"),
99
user_prefs: service(),
10-
classNames: "item session clickable",
10+
11+
tagName: "a",
12+
classNames: "item session clickable d-block nodecoration",
1113
classNameBindings: ["session.status_lowercase"],
1214
show_labels: true,
1315

14-
attributeBindings: ["session.display_id:data-session-id"],
16+
attributeBindings: ["session.display_id:data-session-id", "href"],
1517

1618
session: alias("item"),
1719

1820
in_pdb: oneWay("session.in_pdb"),
1921
interrupted: and("item.finished_running", "item.has_tests_left_to_run"),
2022

21-
mouseUp() {
22-
if (window.getSelection().type == "Range") {
23-
return;
24-
}
25-
return this.get("router").transitionTo(
26-
"session",
27-
this.get("session.display_id")
28-
);
29-
},
23+
href: computed("session.display_id", function() {
24+
return this._router.urlFor("session", this.get("session.display_id"));
25+
}),
3026

3127
has_any_error: computed(
3228
"item.{num_failed_tests,num_error_tests,num_errors}",

webapp/app/components/test-item/component.js

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,25 @@ import { inject as service } from "@ember/service";
55
import Component from "@ember/component";
66

77
export default Component.extend({
8-
router: service(),
8+
_router: service("router"),
99

10+
tagName: "a",
1011
attributeBindings: ["href"],
11-
classNames: "item test clickable",
12-
classNameBindings: "test.status_lowercase",
12+
classNames: "item test clickable d-block nodecoration",
13+
classNameBindings: ["test.status_lowercase", "compact_view:compact"],
14+
compact_view: false,
1315

1416
session_model: null,
1517
test: oneWay("item"),
1618

19+
href: computed("test.display_id", function() {
20+
return this._router.urlFor(
21+
"session.test",
22+
this.get("test.session_display_id"),
23+
this.get("test.display_id")
24+
);
25+
}),
26+
1727
display_params: computed("test.{parameters,variation}", function() {
1828
let seen = new Set();
1929
let returned = [];
@@ -28,20 +38,28 @@ export default Component.extend({
2838
for (var key in params) {
2939
if (params.hasOwnProperty(key)) {
3040
if (!seen.has(key)) {
31-
returned.push({ name: key, value: params[key] });
41+
let parts = key.split(".");
42+
let short = key;
43+
let full = null;
44+
if (parts.length > 1) {
45+
short = parts[parts.length - 1];
46+
full = key;
47+
}
48+
returned.push({
49+
name: key,
50+
short_name: short,
51+
full_name: full,
52+
value: params[key],
53+
last: false,
54+
});
3255
seen.add(key);
3356
}
3457
}
3558
}
3659
}
60+
if (returned.length > 0) {
61+
returned[returned.length - 1].last = true;
62+
}
3763
return returned;
3864
}),
39-
40-
mouseUp(e) {
41-
if (window.getSelection().type == "Range") {
42-
return;
43-
}
44-
e.stopPropagation();
45-
return this.get("router").transitionTo("test", this.get("test.display_id"));
46-
},
4765
});

webapp/app/components/test-item/component.scss

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,14 @@
1919
text-decoration: underline;
2020
}
2121
}
22+
23+
&:not(.compact) .params.inline {
24+
display: none;
25+
}
26+
27+
&.compact {
28+
.row:not(:first-child) {
29+
display: none;
30+
}
31+
}
2232
}

webapp/app/components/test-item/template.hbs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
</div>
2525
<div class="col text-truncate">
2626
<strong>{{format-test-name test.info with_filename=false}}</strong>
27+
<span class="inline params text-monospace">
28+
{{#each display_params as |param|}}
29+
<span class="param-name">{{#if param.full_name}}{{#bs-tooltip}}{{param.full_name}}{{/bs-tooltip}}{{/if}}{{param.short_name}}</span>=<code>{{param.value}}</code>{{if (not param.last) ','}}
30+
{{/each}}
31+
</span>
2732
</div>
2833
</div>
2934
<div class="row">

webapp/app/components/test-overview/component.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import Component from "@ember/component";
22
import EmberObject from "@ember/object";
33
import { computed } from "@ember/object";
4+
import { oneWay } from "@ember/object/computed";
45
import { inject as service } from "@ember/service";
56

67
export default Component.extend({
@@ -12,8 +13,8 @@ export default Component.extend({
1213
test_metadata: null,
1314
test_model: null,
1415

15-
slash_tags: computed("metadata", function() {
16-
let metadata = this.get("metadata");
16+
slash_tags: computed("test_metadata", function() {
17+
let metadata = this.get("test_metadata");
1718
if (!metadata) {
1819
return null;
1920
}
@@ -26,7 +27,6 @@ export default Component.extend({
2627
for (const [name, value] of Object.entries(tags.values)) {
2728
returned.push({ name: name, value: value });
2829
}
29-
3030
for (let name of tags.names) {
3131
if (tags.values.hasOwnProperty(name)) {
3232
continue;
@@ -45,13 +45,11 @@ export default Component.extend({
4545
)) {
4646
let value = metadata[link.key];
4747
if (value) {
48-
returned.push(
49-
EmberObject.create({
50-
name: link.name,
51-
url: value,
52-
icon: link.icon,
53-
})
54-
);
48+
returned.push({
49+
name: link.name,
50+
url: value,
51+
icon: link.icon,
52+
});
5553
}
5654
return returned;
5755
}

0 commit comments

Comments
 (0)