Merge lp:~stephen-stewart/ulysses/css-regression-testing into lp:ulysses

Proposed by Stephen Stewart
Status: Merged
Approved by: Stephen Stewart
Approved revision: 22
Merged at revision: 17
Proposed branch: lp:~stephen-stewart/ulysses/css-regression-testing
Merge into: lp:ulysses
Diff against target: 427 lines (+143/-79)
11 files modified
.bzrignore (+1/-0)
.csslintrc (+1/-0)
Gruntfile.js (+16/-8)
README.md (+12/-4)
config/phantomcss-tests.js (+50/-0)
package.json (+3/-1)
src/dropdowns.css (+0/-1)
src/forms.css (+0/-5)
src/layout.css (+0/-1)
src/navigation.css (+0/-3)
test/index.html (+60/-56)
To merge this branch: bzr merge lp:~stephen-stewart/ulysses/css-regression-testing
Reviewer Review Type Date Requested Status
Jonas G. Drange (community) Approve
Review via email: mp+200656@code.launchpad.net

Commit message

regression tests

Description of the change

Tidy grunt tasks.

Add regression testing via PhantomCSS.

To post a comment you must log in.
22. By Stephen Stewart

fix lint errors

Revision history for this message
Jonas G. Drange (jonas-drange) wrote :

Apart from mismatches and warnings, the solution looks sound.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '.bzrignore'
--- .bzrignore 2014-01-01 17:08:09 +0000
+++ .bzrignore 2014-01-07 11:56:36 +0000
@@ -3,3 +3,4 @@
3node_modules/3node_modules/
4.sass-cache4.sass-cache
5public/*5public/*
6results/
67
=== modified file '.csslintrc'
--- .csslintrc 2014-01-07 10:48:03 +0000
+++ .csslintrc 2014-01-07 11:56:36 +0000
@@ -6,6 +6,7 @@
6 "display-property-grouping": false,6 "display-property-grouping": false,
7 "duplicate-background-images": false,7 "duplicate-background-images": false,
8 "empty-rules": false,8 "empty-rules": false,
9 "fallback-colors": false,
9 "floats": false,10 "floats": false,
10 "font-faces": false,11 "font-faces": false,
11 "font-sizes": false,12 "font-sizes": false,
1213
=== modified file 'Gruntfile.js'
--- Gruntfile.js 2014-01-07 11:00:45 +0000
+++ Gruntfile.js 2014-01-07 11:56:36 +0000
@@ -13,7 +13,7 @@
13 },13 },
1414
15 src: {15 src: {
16 src: 'src/*.scss'16 src: 'src/*.css'
17 }17 }
18 },18 },
1919
@@ -65,8 +65,7 @@
65 options: {65 options: {
66 port: 9001,66 port: 9001,
67 hostname: '*',67 hostname: '*',
68 base: 'test',68 base: 'test'
69 keepalive: true
70 }69 }
71 }70 }
72 },71 },
@@ -84,13 +83,20 @@
84 ['rework.prefix', 'border-radius'],83 ['rework.prefix', 'border-radius'],
85 ['rework.prefix', 'box-shadow'],84 ['rework.prefix', 'box-shadow'],
86 ['rework.prefix', 'animation'],85 ['rework.prefix', 'animation'],
86 ['rework.prefix', 'transition'],
87 ['rework.prefixValue', 'linear-gradient']87 ['rework.prefixValue', 'linear-gradient']
88 ],88 ],
89 vendors: ['-o-', '-ms-', '-moz-', '-webkit-']89 vendors: ['-o-', '-ms-', '-moz-', '-webkit-']
90 }90 }
91 },
92
93 phantomcss: {
94 ulysses: {
95 src: [
96 'config/phantomcss-tests.js'
97 ]
98 },
91 }99 }
92
93 // TODO a release task for bower package
94 });100 });
95101
96 // configure csslint to only run on changed file102 // configure csslint to only run on changed file
@@ -108,14 +114,16 @@
108 grunt.loadNpmTasks('grunt-contrib-watch');114 grunt.loadNpmTasks('grunt-contrib-watch');
109 grunt.loadNpmTasks('grunt-contrib-connect');115 grunt.loadNpmTasks('grunt-contrib-connect');
110 grunt.loadNpmTasks('grunt-rework');116 grunt.loadNpmTasks('grunt-rework');
117 grunt.loadNpmTasks('grunt-phantomcss');
111118
112 grunt.registerTask('default',['build']);119 grunt.registerTask('default',['run']);
113 grunt.registerTask('test', ['csslint']);120 grunt.registerTask('test', ['build', 'connect', 'phantomcss']);
121 grunt.registerTask('run', ['build', 'connect', 'watch']);
114 grunt.registerTask('build', [122 grunt.registerTask('build', [
115 'clean',123 'clean',
116 'rework',124 'rework',
125 'csslint',
117 'concat',126 'concat',
118 'cssmin'127 'cssmin'
119 ]);128 ]);
120 grunt.registerTask('server', ['build', 'connect']);
121}129}
122130
=== modified file 'README.md'
--- README.md 2013-12-14 07:13:35 +0000
+++ README.md 2014-01-07 11:56:36 +0000
@@ -21,9 +21,17 @@
2121
22''''22''''
2323
24To run a server showing the test page:24Default grunt task ('run') will start a server on localhost and a watch task to
2525build and lint any changed files:
26''''26
27grunt server27''''
28grunt [run]
29
30''''
31
32Testing
33
34''''
35grunt test
2836
29''''37''''
3038
=== added directory 'config'
=== added file 'config/phantomcss-tests.js'
--- config/phantomcss-tests.js 1970-01-01 00:00:00 +0000
+++ config/phantomcss-tests.js 2014-01-07 11:56:36 +0000
@@ -0,0 +1,50 @@
1/**
2casper.test.begin('test buttons', 1, function suite(test) {
3 casper.start( 'http://0.0.0.0:9001/index.html' );
4 casper.viewport(1024, 768);
5
6 casper.then(function(){
7 phantomcss.screenshot('[data-qa="buttons"]', 'Buttons');
8 });
9
10 casper.then( function(){
11 phantomcss.compareAll();
12 });
13
14 casper.then( function(){
15 //phantomcss.compareMatched('Buttons');
16 phantomcss.compareAll();
17 });
18
19 casper.run(function(){
20 console.log('\nTHE END.');
21 test.done();
22 phantom.exit(phantomcss.getExitStatus());
23 });
24});
25**/
26
27
28casper.start( 'http://0.0.0.0:9001/index.html' );
29casper.viewport(1024, 768);
30
31casper.then(function(){
32 phantomcss.screenshot('[data-qa="default-button"]', 'Default Button');
33 phantomcss.screenshot('[data-qa="primary-button"]', 'Primary Button');
34 phantomcss.screenshot('[data-qa="tertiary-button"]', 'Tertiary Button');
35 phantomcss.screenshot('[data-qa="button-group"]', 'Button Group');
36 phantomcss.screenshot('[data-qa="button-toolbar"]', 'Button Toolbar');
37});
38
39casper.then(function(){
40 phantomcss.screenshot('[data-qa="headlines"]', 'Headlines');
41});
42
43casper.then( function(){
44 phantomcss.compareAll();
45});
46
47casper.run(function(){
48 console.log('\nTHE END.');
49 phantom.exit(phantomcss.getExitStatus());
50});
051
=== modified file 'package.json'
--- package.json 2014-01-01 17:08:09 +0000
+++ package.json 2014-01-07 11:56:36 +0000
@@ -28,6 +28,8 @@
28 "grunt-contrib-connect": "~0.5.0",28 "grunt-contrib-connect": "~0.5.0",
29 "grunt-contrib-compress": "~0.5.3",29 "grunt-contrib-compress": "~0.5.3",
30 "grunt-contrib-copy": "~0.4.1",30 "grunt-contrib-copy": "~0.4.1",
31 "bower": "~1.2.8"31 "bower": "~1.2.8",
32 "phantomjs": "~1.9.2-6",
33 "grunt-phantomcss": "~0.2.0"
32 }34 }
33}35}
3436
=== added directory 'screenshots'
=== added file 'screenshots/Button Group_3.png'
35Binary files screenshots/Button Group_3.png 1970-01-01 00:00:00 +0000 and screenshots/Button Group_3.png 2014-01-07 11:56:36 +0000 differ37Binary files screenshots/Button Group_3.png 1970-01-01 00:00:00 +0000 and screenshots/Button Group_3.png 2014-01-07 11:56:36 +0000 differ
=== added file 'screenshots/Button Toolbar_4.png'
36Binary files screenshots/Button Toolbar_4.png 1970-01-01 00:00:00 +0000 and screenshots/Button Toolbar_4.png 2014-01-07 11:56:36 +0000 differ38Binary files screenshots/Button Toolbar_4.png 1970-01-01 00:00:00 +0000 and screenshots/Button Toolbar_4.png 2014-01-07 11:56:36 +0000 differ
=== added file 'screenshots/Buttons_0.png'
37Binary files screenshots/Buttons_0.png 1970-01-01 00:00:00 +0000 and screenshots/Buttons_0.png 2014-01-07 11:56:36 +0000 differ39Binary files screenshots/Buttons_0.png 1970-01-01 00:00:00 +0000 and screenshots/Buttons_0.png 2014-01-07 11:56:36 +0000 differ
=== added file 'screenshots/Default Button_0.png'
38Binary files screenshots/Default Button_0.png 1970-01-01 00:00:00 +0000 and screenshots/Default Button_0.png 2014-01-07 11:56:36 +0000 differ40Binary files screenshots/Default Button_0.png 1970-01-01 00:00:00 +0000 and screenshots/Default Button_0.png 2014-01-07 11:56:36 +0000 differ
=== added file 'screenshots/Headlines_1.png'
39Binary files screenshots/Headlines_1.png 1970-01-01 00:00:00 +0000 and screenshots/Headlines_1.png 2014-01-07 11:56:36 +0000 differ41Binary files screenshots/Headlines_1.png 1970-01-01 00:00:00 +0000 and screenshots/Headlines_1.png 2014-01-07 11:56:36 +0000 differ
=== added file 'screenshots/Headlines_5.png'
40Binary files screenshots/Headlines_5.png 1970-01-01 00:00:00 +0000 and screenshots/Headlines_5.png 2014-01-07 11:56:36 +0000 differ42Binary files screenshots/Headlines_5.png 1970-01-01 00:00:00 +0000 and screenshots/Headlines_5.png 2014-01-07 11:56:36 +0000 differ
=== added file 'screenshots/Primary Button_1.png'
41Binary files screenshots/Primary Button_1.png 1970-01-01 00:00:00 +0000 and screenshots/Primary Button_1.png 2014-01-07 11:56:36 +0000 differ43Binary files screenshots/Primary Button_1.png 1970-01-01 00:00:00 +0000 and screenshots/Primary Button_1.png 2014-01-07 11:56:36 +0000 differ
=== added file 'screenshots/Tertiary Button_2.png'
42Binary files screenshots/Tertiary Button_2.png 1970-01-01 00:00:00 +0000 and screenshots/Tertiary Button_2.png 2014-01-07 11:56:36 +0000 differ44Binary files screenshots/Tertiary Button_2.png 1970-01-01 00:00:00 +0000 and screenshots/Tertiary Button_2.png 2014-01-07 11:56:36 +0000 differ
=== modified file 'src/dropdowns.css'
--- src/dropdowns.css 2013-12-14 07:28:45 +0000
+++ src/dropdowns.css 2014-01-07 11:56:36 +0000
@@ -18,7 +18,6 @@
18 border-radius:2px;18 border-radius:2px;
19 background-clip: padding-box;19 background-clip: padding-box;
20 background-color:#fff;20 background-color:#fff;
21 -webkit-box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.1);
22 box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.1);21 box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.1);
23}22}
2423
2524
=== modified file 'src/forms.css'
--- src/forms.css 2014-01-01 16:10:32 +0000
+++ src/forms.css 2014-01-07 11:56:36 +0000
@@ -65,7 +65,6 @@
65input[type="color"],65input[type="color"],
66select,66select,
67textarea {67textarea {
68 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
69 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);68 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
70 border-radius:2px;69 border-radius:2px;
71 width:100%;70 width:100%;
@@ -74,10 +73,6 @@
74 display: block;73 display: block;
75 border: 1px solid #ccc;74 border: 1px solid #ccc;
76 font-weight:inherit;75 font-weight:inherit;
77 -webkit-transition: 0.3s linear border;
78 -moz-transition: 0.3s linear border;
79 -ms-transition: 0.3s linear border;
80 -o-transition: 0.3s linear border;
81 transition: 0.3s linear border;76 transition: 0.3s linear border;
82}77}
8378
8479
=== modified file 'src/layout.css'
--- src/layout.css 2013-12-14 06:56:19 +0000
+++ src/layout.css 2014-01-07 11:56:36 +0000
@@ -94,7 +94,6 @@
94 padding:20px;94 padding:20px;
95 margin:0 0 2em 0;95 margin:0 0 2em 0;
96 border-radius:12px;96 border-radius:12px;
97 padding: 20px;
98}97}
9998
100.ues-box form {99.ues-box form {
101100
=== modified file 'src/navigation.css'
--- src/navigation.css 2014-01-07 11:00:45 +0000
+++ src/navigation.css 2014-01-07 11:56:36 +0000
@@ -101,7 +101,6 @@
101 display:block;101 display:block;
102 height:2px;102 height:2px;
103 left:0;103 left:0;
104 width:22px;
105 z-index:1000;104 z-index:1000;
106 background-color:#f75216;105 background-color:#f75216;
107 width:100%;106 width:100%;
@@ -125,12 +124,10 @@
125124
126.ues-navbar-toggle.active span {125.ues-navbar-toggle.active span {
127 background-color:#dd4814;126 background-color:#dd4814;
128 -webkit-transform: rotate(45deg);
129 transform: rotate(45deg);127 transform: rotate(45deg);
130}128}
131.ues-navbar-toggle.active span:before {129.ues-navbar-toggle.active span:before {
132 background-color:white;130 background-color:white;
133 -webkit-transform: rotate(90deg);
134 transform: rotate(90deg);131 transform: rotate(90deg);
135 top:0;132 top:0;
136 left:0;133 left:0;
137134
=== modified file 'test/index.html'
--- test/index.html 2013-12-14 07:28:45 +0000
+++ test/index.html 2014-01-07 11:56:36 +0000
@@ -6,7 +6,7 @@
66
7<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">7<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
88
9<link href='//fonts.googleapis.com/css?family=Ubuntu:400,300,700' rel='stylesheet' type='text/css'>9<link href='http://fonts.googleapis.com/css?family=Ubuntu:400,300,700' rel='stylesheet' type='text/css'>
1010
11<link rel="stylesheet" href="/css/ulysses.css">11<link rel="stylesheet" href="/css/ulysses.css">
1212
@@ -34,6 +34,7 @@
3434
35 <h2>Headline Styles</h2>35 <h2>Headline Styles</h2>
3636
37<div data-qa="headlines">
37 <h1 class="ues-hdisplay">Display Headline</h1>38 <h1 class="ues-hdisplay">Display Headline</h1>
38 <h1 class="ues-hmain">Main Headline</h1>39 <h1 class="ues-hmain">Main Headline</h1>
39 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>40 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
@@ -41,9 +42,10 @@
41 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>42 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
42 <h1 class="ues-hlight">Light Headline</h1>43 <h1 class="ues-hlight">Light Headline</h1>
43 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>44 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
45</div>
4446
45 <h2>Multiline Headlines</h2>47 <h2>Multiline Headlines</h2>
46 <div style="width:320px">48 <div style="width:320px" data-qa="multiline-headlines">
47 <h1 class="ues-hdisplay">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h1>49 <h1 class="ues-hdisplay">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h1>
48 <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h1>50 <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h1>
49 <h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h2>51 <h2>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h2>
@@ -52,9 +54,9 @@
5254
53 <h2>Block Content</h2>55 <h2>Block Content</h2>
5456
55 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>57 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
56 <p>Reiciendis soluta ab, soluta molestiae nesciunt ipsum est quis debitis voluptas qui at sed quo? Praesentium voluptate voluptatum placeat ea molestiae doloribus deserunt?</p>58 <p>Reiciendis soluta ab, soluta molestiae nesciunt ipsum est quis debitis voluptas qui at sed quo? Praesentium voluptate voluptatum placeat ea molestiae doloribus deserunt?</p>
57 <p>Exercitationem eum esse quos minus, maiores suscipit cupiditate delectus reprehenderit illo quidem distinctio esse nam aliquam fugit, reiciendis veritatis a expedita nisi deserunt rem repellat quos placeat illum, minima est iusto itaque iure? Odit facere possimus architecto sunt facilis voluptatibus eaque maiores necessitatibus, dolor deserunt est.</p>59 <p>Exercitationem eum esse quos minus, maiores suscipit cupiditate delectus reprehenderit illo quidem distinctio esse nam aliquam fugit, reiciendis veritatis a expedita nisi deserunt rem repellat quos placeat illum, minima est iusto itaque iure? Odit facere possimus architecto sunt facilis voluptatibus eaque maiores necessitatibus, dolor deserunt est.</p>
5860
5961
60 <h3>Lead body copy</h3>62 <h3>Lead body copy</h3>
@@ -117,57 +119,59 @@
117119
118<section>120<section>
119 <h1>Buttons</h1>121 <h1>Buttons</h1>
120 <p>122 <div data-qa="buttons">
121 <button class=ues-button>Default button</button>123 <p>
122 <button class="ues-button ues-button-primary">Primary button</button>124 <button class=ues-button data-qa="default-button">Default button</button>
123 <button class="ues-button ues-button-tertiary">Tertiary button</button>125 <button class="ues-button ues-button-primary" data-qa="primary-button">Primary button</button>
124 </p>126 <button class="ues-button ues-button-tertiary" data-qa="tertiary-button">Tertiary button</button>
125127 </p>
126 <p>128
127 <button class="ues-button">&#9731; <span>Change Payment Method</span></button>129 <p>
128 <button class="ues-button ues-button-primary">&#9731; <span>Checkout</span></button>130 <button class="ues-button">&#9731; <span>Change Payment Method</span></button>
129 </p>131 <button class="ues-button ues-button-primary">&#9731; <span>Checkout</span></button>
130132 </p>
131 <p>133
132 <a class="ues-button" href="#">Link</a>134 <p>
133 <button class=ues-button type=button>Button</button>135 <a class="ues-button" href="#">Link</a>
134 <input class=ues-button type=button value=Input>136 <button class=ues-button type=button>Button</button>
135 <input class=ues-button type=submit value=Submit>137 <input class=ues-button type=button value=Input>
136 </p>138 <input class=ues-button type=submit value=Submit>
137139 </p>
138 <p>140
139 <button class="ues-button ues-button-large">Large Button</button>141 <p>
140 <button class=ues-button>Default Button</button>142 <button class="ues-button ues-button-large">Large Button</button>
141 <button class="ues-button ues-button-small">Small Button</button>143 <button class=ues-button>Default Button</button>
142 </p>144 <button class="ues-button ues-button-small">Small Button</button>
143145 </p>
144 <p><button class="ues-button ues-button-block">Default Block Button</button></p>146
145 <p><button class="ues-button ues-button-block ues-button-primary">Primary Block Button</button></p>147 <p><button class="ues-button ues-button-block">Default Block Button</button></p>
146148 <p><button class="ues-button ues-button-block ues-button-primary">Primary Block Button</button></p>
147 <p>149
148 <div class="ues-button-group">150 <p>
149 <button class="ues-button">Left</button>151 <div class="ues-button-group" data-qa="button-group">
150 <button class="ues-button">Middle</button>152 <button class="ues-button">Left</button>
151 <button class="ues-button">Right</button>153 <button class="ues-button">Middle</button>
152 </div>154 <button class="ues-button">Right</button>
153 </p>155 </div>
154156 </p>
155 <p>157
156 <div class="ues-button-toolbar">158 <p>
157 <div class="ues-button-group">159 <div class="ues-button-toolbar" data-qa="button-toolbar">
158 <button class="ues-button">A</button>160 <div class="ues-button-group">
159 <button class="ues-button">B</button>161 <button class="ues-button">A</button>
160 <button class="ues-button">C</button>162 <button class="ues-button">B</button>
161 </div>163 <button class="ues-button">C</button>
162 <div class="ues-button-group">164 </div>
163 <button class="ues-button">D</button>165 <div class="ues-button-group">
164 <button class="ues-button">E</button>166 <button class="ues-button">D</button>
165 </div>167 <button class="ues-button">E</button>
166 <div class="ues-button-group">168 </div>
167 <button class="ues-button">F</button>169 <div class="ues-button-group">
168 </div>170 <button class="ues-button">F</button>
169 </div>171 </div>
170 </p>172 </div>
173 </p>
174 </div>
171175
172 <h1>Dropdowns</h1>176 <h1>Dropdowns</h1>
173177

Subscribers

People subscribed via source and target branches