Parcourir la source

Merge pull request #69 from ckeditor/t/67

Fixed compatibility issues in tests.
Piotrek Koszuliński il y a 9 ans
Parent
commit
b71264d7cd
1 fichiers modifiés avec 98 ajouts et 97 suppressions
  1. 98 97
      packages/ckeditor5-ui/tests/template.js

+ 98 - 97
packages/ckeditor5-ui/tests/template.js

@@ -12,6 +12,7 @@ import Model from '/ckeditor5/ui/model.js';
 import CKEditorError from '/ckeditor5/utils/ckeditorerror.js';
 import EmitterMixin from '/ckeditor5/utils/emittermixin.js';
 import DOMEmitterMixin from '/ckeditor5/ui/domemittermixin.js';
+import normalizeHtml from '/tests/utils/_utils/normalizehtml.js';
 
 testUtils.createSinonSandbox();
 
@@ -126,7 +127,7 @@ describe( 'Template', () => {
 
 			expect( el ).to.be.instanceof( HTMLElement );
 			expect( el.parentNode ).to.be.null;
-			expect( el.outerHTML ).to.be.equal( '<p></p>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p></p>' );
 			expect( el.namespaceURI ).to.be.equal( 'http://www.w3.org/1999/xhtml' );
 		} );
 
@@ -151,7 +152,7 @@ describe( 'Template', () => {
 
 			expect( el ).to.be.instanceof( HTMLElement );
 			expect( el.parentNode ).to.be.null;
-			expect( el.outerHTML ).to.be.equal( '<p class="a b" x="bar">foo</p>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p class="a b" x="bar">foo</p>' );
 			expect( el.attributes.getNamedItem( 'class' ).namespaceURI ).to.be.null;
 		} );
 
@@ -165,7 +166,7 @@ describe( 'Template', () => {
 				children: [ 'foo' ]
 			} ).render();
 
-			expect( el.outerHTML ).to.be.equal( '<p>foo</p>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p>foo</p>' );
 		} );
 
 		it( 'renders HTMLElement attributes – falsy values', () => {
@@ -179,7 +180,7 @@ describe( 'Template', () => {
 				children: [ 'foo' ]
 			} ).render();
 
-			expect( el.outerHTML ).to.be.equal( '<p y="foo">foo</p>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p y="foo">foo</p>' );
 		} );
 
 		it( 'renders HTMLElement attributes in a custom namespace', () => {
@@ -198,7 +199,7 @@ describe( 'Template', () => {
 				children: [ 'foo' ]
 			} ).render();
 
-			expect( el.outerHTML ).to.be.equal( '<p class="a b" x="bar">foo</p>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p class="a b" x="bar">foo</p>' );
 			expect( el.attributes.getNamedItem( 'class' ).namespaceURI ).to.equal( 'foo' );
 			expect( el.attributes.getNamedItem( 'x' ).namespaceURI ).to.equal( 'abc' );
 		} );
@@ -227,7 +228,7 @@ describe( 'Template', () => {
 				]
 			} ).render();
 
-			expect( el.outerHTML ).to.be.equal( '<p a="A"><b>B</b><i>C<b>D</b></i></p>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p a="A"><b>B</b><i>C<b>D</b></i></p>' );
 		} );
 
 		it( 'creates a Text node', () => {
@@ -246,7 +247,7 @@ describe( 'Template', () => {
 				]
 			} ).render();
 
-			expect( el.outerHTML ).to.be.equal( '<p>foobar</p>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p>foobar</p>' );
 		} );
 
 		it( 'creates multiple child Text Nodes', () => {
@@ -262,7 +263,7 @@ describe( 'Template', () => {
 			} ).render();
 
 			expect( el.childNodes ).to.have.length( 5 );
-			expect( el.outerHTML ).to.be.equal( '<p>abcdef</p>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p>abcdef</p>' );
 		} );
 
 		it( 'activates model bindings – root', () => {
@@ -336,7 +337,7 @@ describe( 'Template', () => {
 					}
 				} );
 
-				expect( el.outerHTML ).to.equal( '<p style="color: red"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p style="color:red;"></p>' );
 			} );
 
 			it( 'renders as a static value (Array of values)', () => {
@@ -347,7 +348,7 @@ describe( 'Template', () => {
 					}
 				} );
 
-				expect( el.outerHTML ).to.equal( '<p style="color: red; display: block;"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p style="color:red;display:block;"></p>' );
 			} );
 
 			it( 'renders as a value bound to the model', () => {
@@ -358,11 +359,11 @@ describe( 'Template', () => {
 					}
 				} );
 
-				expect( el.outerHTML ).to.equal( '<p style="width: 10px"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p style="width:10px;"></p>' );
 
 				observable.width = '1em';
 
-				expect( el.outerHTML ).to.equal( '<p style="width: 1em"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p style="width:1em;"></p>' );
 			} );
 
 			it( 'renders as a value bound to the model (Array of bindings)', () => {
@@ -376,11 +377,11 @@ describe( 'Template', () => {
 					}
 				} );
 
-				expect( el.outerHTML ).to.equal( '<p style="width: 10px; background-color: yellow;"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p style="width:10px;background-color:yellow;"></p>' );
 
 				observable.width = '1em';
 
-				expect( el.outerHTML ).to.equal( '<p style="width: 1em; background-color: yellow;"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p style="width:1em;background-color:yellow;"></p>' );
 			} );
 
 			describe( 'object', () => {
@@ -396,12 +397,12 @@ describe( 'Template', () => {
 						}
 					} );
 
-					expect( el.outerHTML ).to.equal( '<p style="width: 10px; height: 10px; background-color: yellow;"></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p style="width:10px;height:10px;background-color:yellow;"></p>' );
 
 					observable.width = '20px';
 					observable.backgroundColor = 'green';
 
-					expect( el.outerHTML ).to.equal( '<p style="width: 20px; height: 10px; background-color: green;"></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p style="width:20px;height:10px;background-color:green;"></p>' );
 				} );
 
 				it( 'renders with empty string attributes', () => {
@@ -415,11 +416,11 @@ describe( 'Template', () => {
 						}
 					} );
 
-					expect( el.outerHTML ).to.be.equal( '<p style="background-color: yellow;"></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p style="background-color:yellow;"></p>' );
 
 					observable.backgroundColor = '';
 
-					expect( el.outerHTML ).to.be.equal( '<p></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p></p>' );
 				} );
 
 				it( 'renders with falsy values', () => {
@@ -434,7 +435,7 @@ describe( 'Template', () => {
 						}
 					} );
 
-					expect( el.outerHTML ).to.be.equal( '<p></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<p></p>' );
 				} );
 			} );
 		} );
@@ -477,7 +478,7 @@ describe( 'Template', () => {
 			new Template( {} ).apply( el );
 			new Template( {} ).apply( text );
 
-			expect( el.outerHTML ).to.be.equal( '<div></div>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<div></div>' );
 			expect( text.textContent ).to.be.equal( '' );
 		} );
 
@@ -498,7 +499,7 @@ describe( 'Template', () => {
 				}
 			} ).apply( el );
 
-			expect( el.outerHTML ).to.be.equal( '<div class="a b" x="bar"></div>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<div class="a b" x="bar"></div>' );
 		} );
 
 		it( 'doesn\'t apply new child to an HTMLElement – Text Node', () => {
@@ -507,7 +508,7 @@ describe( 'Template', () => {
 				children: [ 'foo' ]
 			} ).apply( el );
 
-			expect( el.outerHTML ).to.be.equal( '<div></div>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<div></div>' );
 		} );
 
 		it( 'doesn\'t apply new child to an HTMLElement – HTMLElement', () => {
@@ -520,7 +521,7 @@ describe( 'Template', () => {
 				]
 			} ).apply( el );
 
-			expect( el.outerHTML ).to.be.equal( '<div></div>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<div></div>' );
 		} );
 
 		it( 'applies new textContent to an existing Text Node of an HTMLElement', () => {
@@ -531,7 +532,7 @@ describe( 'Template', () => {
 				children: [ 'foo' ]
 			} ).apply( el );
 
-			expect( el.outerHTML ).to.be.equal( '<div>foo</div>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<div>foo</div>' );
 		} );
 
 		it( 'applies attributes and TextContent to a DOM tree', () => {
@@ -554,7 +555,7 @@ describe( 'Template', () => {
 				]
 			} ).apply( el );
 
-			expect( el.outerHTML ).to.be.equal( '<div class="parent">Children: <span class="child"></span></div>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.be.equal( '<div class="parent">Children: <span class="child"></span></div>' );
 		} );
 
 		it( 'should work for deep DOM structure', () => {
@@ -567,7 +568,7 @@ describe( 'Template', () => {
 			el.appendChild( childA );
 			el.appendChild( childB );
 
-			expect( el.outerHTML ).to.equal( '<div><a>anchor</a><b>bold</b></div>' );
+			expect( normalizeHtml( el.outerHTML ) ).to.equal( '<div><a>anchor</a><b>bold</b></div>' );
 
 			const spy1 = testUtils.sinon.spy();
 			const spy2 = testUtils.sinon.spy();
@@ -613,14 +614,14 @@ describe( 'Template', () => {
 				}
 			} ).apply( el );
 
-			expect( el.outerHTML ).to.equal( '<div id="BAR" class="applied-parent-qux">' +
+			expect( normalizeHtml( el.outerHTML ) ).to.equal( '<div class="applied-parent-qux" id="BAR">' +
 				'<a class="applied-A-bar" id="applied-A">Text applied to childA.</a>' +
 				'<b class="applied-B-qux" id="applied-B">Text applied to childB.</b>' +
 			'</div>' );
 
 			observable.foo = 'updated';
 
-			expect( el.outerHTML ).to.equal( '<div id="UPDATED" class="applied-parent-qux">' +
+			expect( normalizeHtml( el.outerHTML ) ).to.equal( '<div class="applied-parent-qux" id="UPDATED">' +
 				'<a class="applied-A-updated" id="applied-A">Text applied to childA.</a>' +
 				'<b class="applied-B-qux" id="applied-B">Text applied to childB.</b>' +
 			'</div>' );
@@ -907,10 +908,10 @@ describe( 'Template', () => {
 						children: [ 'abc' ]
 					} );
 
-					expect( el.outerHTML ).to.equal( '<p class="bar">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="bar">abc</p>' );
 
 					observable.foo = 'baz';
-					expect( el.outerHTML ).to.equal( '<p class="baz">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="baz">abc</p>' );
 					expect( el.attributes.getNamedItem( 'class' ).namespaceURI ).to.be.null;
 				} );
 
@@ -924,10 +925,10 @@ describe( 'Template', () => {
 						]
 					} );
 
-					expect( el.outerHTML ).to.equal( '<p>bar</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>bar</p>' );
 
 					observable.foo = 'baz';
-					expect( el.outerHTML ).to.equal( '<p>baz</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>baz</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – value processing', () => {
@@ -945,10 +946,10 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 3;
-					expect( el.outerHTML ).to.equal( '<p class="positive">positive</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="positive">positive</p>' );
 
 					observable.foo = -7;
-					expect( el.outerHTML ).to.equal( '<p class="negative">negative</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="negative">negative</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – value processing (use Node)', () => {
@@ -969,10 +970,10 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 3;
-					expect( el.outerHTML ).to.equal( '<p class="HTMLElement positive"></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="HTMLElement positive"></p>' );
 
 					observable.foo = -7;
-					expect( el.outerHTML ).to.equal( '<p></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p></p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – custom callback', () => {
@@ -990,10 +991,10 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'moo';
-					expect( el.outerHTML ).to.equal( '<p>moo</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>moo</p>' );
 
 					observable.foo = 'changed';
-					expect( el.outerHTML ).to.equal( '<p class="changed">changed</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="changed">changed</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – array of bindings (HTMLElement attribute)', () => {
@@ -1013,11 +1014,11 @@ describe( 'Template', () => {
 
 					observable.foo = 'a';
 					observable.baz = 'b';
-					expect( el.outerHTML ).to.equal( '<p class="ck-class a b foo-is-a ck-end">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="ck-class a b foo-is-a ck-end">abc</p>' );
 
 					observable.foo = 'c';
 					observable.baz = 'd';
-					expect( el.outerHTML ).to.equal( '<p class="ck-class c d foo-is-c ck-end">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="ck-class c d foo-is-c ck-end">abc</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – array of bindings (Text Node)', () => {
@@ -1040,11 +1041,11 @@ describe( 'Template', () => {
 
 					observable.foo = 'a';
 					observable.baz = 'b';
-					expect( el.outerHTML ).to.equal( '<p>ck-class a b foo-is-a ck-end</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>ck-class a b foo-is-a ck-end</p>' );
 
 					observable.foo = 'c';
 					observable.baz = 'd';
-					expect( el.outerHTML ).to.equal( '<p>ck-class c d foo-is-c ck-end</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>ck-class c d foo-is-c ck-end</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – falsy values', () => {
@@ -1060,22 +1061,22 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'bar';
-					expect( el.outerHTML ).to.equal( '<p simple="bar" complex="bar" zero="0 bar" emptystring="bar">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p complex="bar" emptystring="bar" simple="bar" zero="0 bar">abc</p>' );
 
 					observable.foo = 0;
-					expect( el.outerHTML ).to.equal( '<p simple="0" complex="0" zero="0 0" emptystring="0">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p complex="0" emptystring="0" simple="0" zero="0 0">abc</p>' );
 
 					observable.foo = false;
-					expect( el.outerHTML ).to.equal( '<p zero="0">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p zero="0">abc</p>' );
 
 					observable.foo = null;
-					expect( el.outerHTML ).to.equal( '<p zero="0">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p zero="0">abc</p>' );
 
 					observable.foo = undefined;
-					expect( el.outerHTML ).to.equal( '<p zero="0">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p zero="0">abc</p>' );
 
 					observable.foo = '';
-					expect( el.outerHTML ).to.equal( '<p zero="0">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p zero="0">abc</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – a custom namespace', () => {
@@ -1098,11 +1099,11 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'bar';
-					expect( el.outerHTML ).to.equal( '<p class="bar" custom="bar qux">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="bar" custom="bar qux">abc</p>' );
 					expect( el.attributes.getNamedItem( 'class' ).namespaceURI ).to.equal( 'foo' );
 
 					observable.foo = 'baz';
-					expect( el.outerHTML ).to.equal( '<p class="baz" custom="baz qux">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="baz" custom="baz qux">abc</p>' );
 					expect( el.attributes.getNamedItem( 'class' ).namespaceURI ).to.equal( 'foo' );
 				} );
 			} );
@@ -1130,25 +1131,25 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'bar';
-					expect( el.outerHTML ).to.equal( '<p class="true">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="true">abc</p>' );
 
 					observable.foo = true;
-					expect( el.outerHTML ).to.equal( '<p class="true">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="true">abc</p>' );
 
 					observable.foo = 0;
-					expect( el.outerHTML ).to.equal( '<p class="true">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="true">abc</p>' );
 
 					observable.foo = false;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = null;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = undefined;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = '';
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 				} );
 
 				// TODO: Is this alright? It makes sense but it's pretty useless. Text Node cannot be
@@ -1164,25 +1165,25 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'abc';
-					expect( el.outerHTML ).to.equal( '<p>true</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>true</p>' );
 
 					observable.foo = true;
-					expect( el.outerHTML ).to.equal( '<p>true</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>true</p>' );
 
 					observable.foo = 0;
-					expect( el.outerHTML ).to.equal( '<p>true</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>true</p>' );
 
 					observable.foo = false;
-					expect( el.outerHTML ).to.equal( '<p></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p></p>' );
 
 					observable.foo = null;
-					expect( el.outerHTML ).to.equal( '<p></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p></p>' );
 
 					observable.foo = undefined;
-					expect( el.outerHTML ).to.equal( '<p></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p></p>' );
 
 					observable.foo = '';
-					expect( el.outerHTML ).to.equal( '<p></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p></p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – value of an attribute (HTMLElement attribute)', () => {
@@ -1195,25 +1196,25 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'bar';
-					expect( el.outerHTML ).to.equal( '<p class="bar">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="bar">abc</p>' );
 
 					observable.foo = true;
-					expect( el.outerHTML ).to.equal( '<p class="bar">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="bar">abc</p>' );
 
 					observable.foo = 0;
-					expect( el.outerHTML ).to.equal( '<p class="bar">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="bar">abc</p>' );
 
 					observable.foo = 64;
-					expect( el.outerHTML ).to.equal( '<p class="bar">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="bar">abc</p>' );
 
 					observable.foo = false;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = null;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = undefined;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – value of an attribute (Text Node)', () => {
@@ -1227,13 +1228,13 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'bar';
-					expect( el.outerHTML ).to.equal( '<p>bar</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>bar</p>' );
 
 					observable.foo = false;
-					expect( el.outerHTML ).to.equal( '<p></p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p></p>' );
 
 					observable.foo = 64;
-					expect( el.outerHTML ).to.equal( '<p>bar</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>bar</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – array of bindings (HTMLElement attribute)', () => {
@@ -1251,10 +1252,10 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = observable.bar = true;
-					expect( el.outerHTML ).to.equal( '<p class="ck-class foo-set ck-end">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="ck-class foo-set ck-end">abc</p>' );
 
 					observable.foo = observable.bar = false;
-					expect( el.outerHTML ).to.equal( '<p class="ck-class bar-not-set ck-end">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="ck-class bar-not-set ck-end">abc</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – value of an attribute processed by a callback', () => {
@@ -1267,13 +1268,13 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'bar';
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = false;
-					expect( el.outerHTML ).to.equal( '<p class="there–is–no–foo">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="there–is–no–foo">abc</p>' );
 
 					observable.foo = 64;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – value of an attribute processed by a callback (use Node)', () => {
@@ -1286,13 +1287,13 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'bar';
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = 'P';
-					expect( el.outerHTML ).to.equal( '<p class="eqls-tag-name">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="eqls-tag-name">abc</p>' );
 
 					observable.foo = 64;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 				} );
 
 				it( 'allows binding attribute to the observable – falsy values', () => {
@@ -1305,25 +1306,25 @@ describe( 'Template', () => {
 					} );
 
 					observable.foo = 'bar';
-					expect( el.outerHTML ).to.equal( '<p class="foo-is-set">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="foo-is-set">abc</p>' );
 
 					observable.foo = true;
-					expect( el.outerHTML ).to.equal( '<p class="foo-is-set">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="foo-is-set">abc</p>' );
 
 					observable.foo = 0;
-					expect( el.outerHTML ).to.equal( '<p class="foo-is-set">abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p class="foo-is-set">abc</p>' );
 
 					observable.foo = false;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = null;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = undefined;
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 
 					observable.foo = '';
-					expect( el.outerHTML ).to.equal( '<p>abc</p>' );
+					expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc</p>' );
 				} );
 			} );
 
@@ -1495,7 +1496,7 @@ describe( 'Template', () => {
 
 				observable.foo = 'baz';
 
-				expect( el.outerHTML ).to.equal( '<p a="baz c d"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p a="baz c d"></p>' );
 			} );
 
 			it( 'extends existing - bindings #2', () => {
@@ -1517,7 +1518,7 @@ describe( 'Template', () => {
 				observable.foo = 'abc';
 				observable.baz = 'def';
 
-				expect( el.outerHTML ).to.equal( '<p a="b abc c def"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p a="b abc c def"></p>' );
 			} );
 
 			it( 'creates new - no attributes', () => {
@@ -1586,7 +1587,7 @@ describe( 'Template', () => {
 
 				observable.foo = 'abc';
 
-				expect( el.outerHTML ).to.equal( '<p a="b" c="abc"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p a="b" c="abc"></p>' );
 			} );
 
 			it( 'creates new - bindings #2', () => {
@@ -1607,7 +1608,7 @@ describe( 'Template', () => {
 
 				observable.foo = 'abc';
 
-				expect( el.outerHTML ).to.equal( '<p a="b" c="d abc"></p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p a="b" c="d abc"></p>' );
 			} );
 		} );
 
@@ -1687,7 +1688,7 @@ describe( 'Template', () => {
 
 				observable.foo = 'asd';
 
-				expect( el.outerHTML ).to.equal( '<p>asd abc</p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>asd abc</p>' );
 				expect( el.childNodes ).to.have.length( 1 );
 			} );
 
@@ -1709,7 +1710,7 @@ describe( 'Template', () => {
 
 				observable.foo = 'asd';
 
-				expect( el.outerHTML ).to.equal( '<p>abc asd</p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>abc asd</p>' );
 				expect( el.childNodes ).to.have.length( 1 );
 			} );
 
@@ -1734,7 +1735,7 @@ describe( 'Template', () => {
 				observable.foo = 'A';
 				observable.baz = 'B';
 
-				expect( el.outerHTML ).to.equal( '<p>A BXY</p>' );
+				expect( normalizeHtml( el.outerHTML ) ).to.equal( '<p>A BXY</p>' );
 				expect( el.childNodes ).to.have.length( 2 );
 			} );
 		} );
@@ -2079,7 +2080,7 @@ function extensionTest( base, extension, expectedHtml ) {
 
 	document.body.appendChild( el );
 
-	expect( el.outerHTML ).to.equal( expectedHtml );
+	expect( normalizeHtml( el.outerHTML ) ).to.equal( expectedHtml );
 
 	return el;
 }