Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
beat.web
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
beat
beat.web
Commits
35a89893
Commit
35a89893
authored
8 years ago
by
Jaden Diefenbaugh
Browse files
Options
Downloads
Patches
Plain Diff
expand reports test spec for adding exps and init report page ui state
parent
453f415e
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!223
Reports overhaul
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
beat/web/reports/static/reports/test/report-spec.js
+252
-1
252 additions, 1 deletion
beat/web/reports/static/reports/test/report-spec.js
with
252 additions
and
1 deletion
beat/web/reports/static/reports/test/report-spec.js
+
252
−
1
View file @
35a89893
// general tests for the reports app
describe
(
'
reports app
'
,
function
(){
// contain helpers for browser.wait
const
until
=
protractor
.
ExpectedConditions
;
// just use enter.perform() to send the enter key
const
enter
=
browser
.
actions
().
sendKeys
(
protractor
.
Key
.
ENTER
);
// since angular isnt configured correctly for protractor,
// dont make protractor wait for angular
browser
.
ignoreSynchronization
=
true
;
// just to make sure the window is maximized
// just to make sure the window is maximized during these tests.
// helps with button clicking & such
browser
.
driver
.
manage
().
window
().
maximize
();
// login to the default user ('user') once before running all these tests
...
...
@@ -87,6 +93,7 @@ describe('reports app', function(){
});
});
// go to the experiments page and add up to 5 already-ran experiments
describe
(
'
adding experiments to the "test" report
'
,
function
(){
// go to experiments page
beforeAll
(
function
(){
...
...
@@ -125,8 +132,252 @@ describe('reports app', function(){
.
then
(()
=>
{
let
headerText
=
element
(
by
.
css
(
'
.report-results > h5
'
));
expect
(
headerText
.
getText
()).
toContain
(
'
Successfully added
'
);
return
browser
.
get
(
'
http://localhost:8000/reports/user/test/
'
);
})
.
then
(()
=>
{
expect
(
element
.
all
(
by
.
css
(
'
#experiment-list-test > tbody > tr
'
)).
count
()).
toBeGreaterThan
(
0
);
})
;
});
});
// create 2 groups, 'group1' & 'group2'
describe
(
'
creating groups
'
,
function
(){
let
newGroupInput
=
element
(
by
.
css
(
'
#createNewGroupInput
'
));
it
(
'
should create the "group1" group using the enter key
'
,
function
(){
newGroupInput
.
sendKeys
(
'
group1
'
)
.
then
(()
=>
enter
.
perform
())
.
then
(()
=>
browser
.
wait
(
until
.
textToBePresentInElementValue
(
element
(
by
.
css
(
'
#createNewGroupInput
'
)),
''
),
1000
))
.
then
(()
=>
expect
(
element
.
all
(
by
.
css
(
'
#groupsLayout > div
'
)).
count
()).
toBe
(
1
))
;
});
it
(
'
should create the "group2" group using the "+" button
'
,
function
(){
newGroupInput
.
sendKeys
(
'
group2
'
)
.
then
(()
=>
element
(
by
.
css
(
'
#space-for-report-items + div button
'
)).
click
())
.
then
(()
=>
browser
.
wait
(
until
.
textToBePresentInElementValue
(
element
(
by
.
css
(
'
#createNewGroupInput
'
)),
''
),
1000
))
.
then
(()
=>
expect
(
element
.
all
(
by
.
css
(
'
#groupsLayout > div
'
)).
count
()).
toBe
(
2
))
;
});
});
// make sure the initial report layouts page is correct
describe
(
'
report page state with <6 experiments & two groups
'
,
function
(){
describe
(
'
header block
'
,
function
(){
const
header
=
element
(
by
.
css
(
'
.col-sm-12 > p.bs-callout.bs-callout-danger
'
));
it
(
'
has 4 labels
'
,
function
()
{
expect
(
header
.
all
(
by
.
tagName
(
'
br
'
)).
count
()).
toBe
(
4
);
});
it
(
'
shows the unique report id
'
,
function
()
{
expect
(
header
.
element
(
by
.
css
(
'
.fa-arrow-circle-right + a
'
)).
getAttribute
(
'
href
'
)).
toMatch
(
/
\/
reports
\/[
0-9
]
+/
);
});
it
(
'
shows the created date
'
,
function
()
{
expect
(
header
.
element
(
by
.
css
(
'
.fa-calendar-o + strong
'
)).
getText
()).
toMatch
(
/.+ago/
);
});
it
(
'
shows the "last edited" date
'
,
function
()
{
expect
(
header
.
element
(
by
.
css
(
'
.fa-calendar-o + strong + br + .fa-calendar-o + strong
'
)).
getText
()).
toMatch
(
/.+ago/
);
});
it
(
'
shows that the report is editable
'
,
function
()
{
expect
(
header
.
element
(
by
.
css
(
'
.fa-warning + strong
'
)).
getText
()).
toBe
(
'
Editable
'
);
});
});
describe
(
'
documentation panel
'
,
function
(){
it
(
'
shows the empty warning
'
,
function
()
{
expect
(
element
(
by
.
css
(
'
#description-display > div
'
)).
getAttribute
(
'
class
'
)).
toContain
(
'
alert-warning
'
);
});
it
(
'
has an "Add" button
'
,
function
()
{
expect
(
element
(
by
.
css
(
'
#btn-edit-doc > i
'
)).
getAttribute
(
'
class
'
)).
toContain
(
'
fa-edit
'
);
});
});
describe
(
'
experiments list panel
'
,
function
(){
describe
(
'
inline toolbar
'
,
function
(){
const
toolbar
=
element
(
by
.
css
(
'
#filters
'
));
it
(
'
has 3 filters
'
,
function
(){
expect
(
toolbar
.
all
(
by
.
xpath
(
"
./div
"
)).
count
()).
toBe
(
3
);
});
it
(
'
has a filter-rows widget
'
,
function
(){
expect
(
toolbar
.
element
(
by
.
css
(
'
#text-filter
'
)).
getAttribute
(
'
placeholder
'
)).
toBe
(
'
Filter rows...
'
);
});
it
(
'
has an attestation filter
'
,
function
(){
expect
(
toolbar
.
element
(
by
.
css
(
'
#attestation-filter
'
)).
all
(
by
.
tagName
(
'
option
'
)).
count
()).
toBe
(
3
);
});
it
(
'
has a privacy filter
'
,
function
(){
expect
(
toolbar
.
element
(
by
.
css
(
'
#privacy-filter
'
)).
all
(
by
.
tagName
(
'
option
'
)).
count
()).
toBe
(
4
);
});
});
describe
(
'
table
'
,
function
(){
const
table
=
element
(
by
.
css
(
'
#experiment-list-test
'
));
it
(
'
has 8 columns
'
,
function
(){
const
cols
=
table
.
all
(
by
.
css
(
'
thead th
'
));
expect
(
cols
.
count
()).
toBe
(
8
);
expect
(
cols
.
get
(
0
).
getAttribute
(
'
class
'
)).
toBe
(
'
delete
'
);
expect
(
cols
.
get
(
1
).
getAttribute
(
'
class
'
)).
toBe
(
'
attestation
'
);
expect
(
cols
.
get
(
2
).
getAttribute
(
'
class
'
)).
toBe
(
'
privacy
'
);
expect
(
cols
.
get
(
3
).
getAttribute
(
'
class
'
)).
toBe
(
'
status
'
);
expect
(
cols
.
get
(
4
).
getAttribute
(
'
class
'
)).
toBe
(
'
date
'
);
expect
(
cols
.
get
(
5
).
getText
()).
toBe
(
'
Name
'
);
expect
(
cols
.
get
(
6
).
getAttribute
(
'
class
'
)).
toBe
(
'
datasets
'
);
expect
(
cols
.
get
(
7
).
getAttribute
(
'
class
'
)).
toBe
(
'
analyzers
'
);
});
it
(
'
has 5 or less rows
'
,
function
()
{
const
rows
=
table
.
all
(
by
.
css
(
'
tbody > tr
'
));
expect
(
rows
.
count
()).
toBeLessThan
(
6
);
});
it
(
'
has a "Remove Selected Experiments" button
'
,
function
()
{
const
b
=
element
(
by
.
buttonText
(
'
Remove Selected Experiments
'
));
expect
(
b
.
getAttribute
(
'
disabled
'
)).
toBeDefined
();
});
});
});
describe
(
'
report content block
'
,
function
(){
const
groupsLayout
=
element
(
by
.
css
(
'
#groupsLayout
'
));
describe
(
'
group1 container header
'
,
function
(){
const
header
=
element
(
by
.
css
(
'
#group1-heading
'
));
const
children
=
element
.
all
(
by
.
css
(
'
#group1-heading > h4 > *
'
));
it
(
'
has 5 children: a collapse link, name widget, a button group, and the add items menu
'
,
function
(){
expect
(
children
.
count
()).
toBe
(
4
);
});
describe
(
'
collapse link
'
,
function
(){
it
(
'
toggles "#collapse-group1"
'
,
function
(){
expect
(
children
.
get
(
0
).
getAttribute
(
'
href
'
)).
toContain
(
'
#collapse-group1
'
);
});
});
describe
(
'
group name widget
'
,
function
(){
const
widgetEls
=
children
.
get
(
1
).
all
(
by
.
tagName
(
'
span
'
));
const
label
=
widgetEls
.
get
(
0
);
const
button
=
widgetEls
.
get
(
1
);
it
(
'
has value "group1"
'
,
function
(){
expect
(
label
.
getText
()).
toBe
(
'
group1
'
);
});
describe
(
'
edit button
'
,
function
(){
it
(
'
has the pencil glyphicon
'
,
function
(){
expect
(
button
.
getAttribute
(
'
class
'
)).
toBe
(
'
glyphicon glyphicon-pencil
'
);
});
it
(
'
is clickable
'
,
function
(){
// no direct way to check if clickable...
// so make sure that its not disabled & its displayed instead
expect
(
button
.
getAttribute
(
'
disabled
'
)).
toBeNull
();
expect
(
button
.
isDisplayed
()).
toBeTruthy
();
});
});
});
describe
(
'
button group
'
,
function
(){
const
grp
=
children
.
get
(
2
);
const
btnChildren
=
grp
.
all
(
by
.
className
(
'
btn
'
));
it
(
'
is a btn group
'
,
function
(){
expect
(
grp
.
getAttribute
(
'
class
'
)).
toContain
(
'
btn-group
'
);
});
it
(
'
is an action buttons
'
,
function
(){
expect
(
grp
.
getAttribute
(
'
class
'
)).
toContain
(
'
action-buttons
'
);
});
it
(
'
has btn children
'
,
function
()
{
const
btnChildren
=
grp
.
all
(
by
.
className
(
'
btn
'
));
expect
(
btnChildren
.
count
()).
toBe
(
2
);
});
it
(
'
has a button to delete a group with a red "X"
'
,
function
(){
expect
(
btnChildren
.
get
(
0
).
getAttribute
(
'
title
'
)).
toBe
(
'
Delete Group
'
);
expect
(
btnChildren
.
get
(
0
).
element
(
by
.
css
(
'
i
'
)).
getAttribute
(
'
class
'
)).
toContain
(
'
fa-times
'
);
});
it
(
'
has a button to drag & sort the group with a 4-directional arrow
'
,
function
(){
expect
(
btnChildren
.
get
(
1
).
getAttribute
(
'
title
'
)).
toBe
(
'
Drag to re-order group
'
);
expect
(
btnChildren
.
get
(
1
).
element
(
by
.
css
(
'
i
'
)).
getAttribute
(
'
class
'
)).
toContain
(
'
fa-arrows
'
);
});
});
describe
(
'
add items menu
'
,
function
(){
const
grp
=
children
.
get
(
3
);
const
buttons
=
grp
.
all
(
by
.
tagName
(
'
button
'
));
it
(
'
has 3 buttons
'
,
function
(){
expect
(
buttons
.
count
()).
toBe
(
3
);
});
it
(
'
is all disabled
'
,
function
(){
expect
(
buttons
.
filter
(
b
=>
b
.
getAttribute
(
'
disabled
'
).
then
(
d
=>
d
)).
count
()).
toBe
(
3
);
});
it
(
'
has a button to add plots
'
,
function
(){
const
el
=
element
(
by
.
buttonText
(
'
Add Plot
'
));
expect
(
el
).
toBeDefined
();
});
it
(
'
has a button to add tables
'
,
function
(){
const
el
=
element
(
by
.
buttonText
(
'
Add Table
'
));
expect
(
el
).
toBeDefined
();
});
it
(
'
has a button to add text blocks
'
,
function
(){
const
el
=
element
(
by
.
buttonText
(
'
Add Text Block
'
));
expect
(
el
).
toBeDefined
();
});
});
});
describe
(
'
group1 experiments panel
'
,
function
(){
const
header
=
element
(
by
.
css
(
'
#group1-explist-heading
'
));
const
body
=
element
(
by
.
css
(
'
#collapse-group1-explist
'
));
it
(
'
is visible
'
,
function
(){
expect
(
header
.
isDisplayed
()).
toBeTruthy
();
expect
(
body
.
isDisplayed
()).
toBeTruthy
();
});
it
(
'
is empty
'
,
function
(){
expect
(
element
.
all
(
by
.
css
(
'
#collapse-group1-explist > .panel-body > *
'
)).
count
()).
toBe
(
0
);
});
describe
(
'
header button
'
,
function
(){
const
button
=
element
(
by
.
css
(
'
#group1_exp_add_dropdown
'
));
it
(
'
is non-disabled
'
,
function
(){
expect
(
button
.
getAttribute
(
'
disabled
'
)).
toBeNull
();
});
it
(
'
has the text "Add Experiment"
'
,
function
(){
expect
(
button
.
getText
()).
toBe
(
'
Add Experiment
'
);
});
});
});
describe
(
'
group1 content panel
'
,
function
(){
it
(
'
doesnt exist
'
,
function
(){
expect
(
element
.
all
(
by
.
css
(
'
#collapse-group1 > *
'
)).
count
()).
toBe
(
1
);
});
});
});
});
});
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment