@@ -44,7 +44,7 @@ describe('no-implicit-explicit-label', function() {
 	});
 
 	describe('SerialVirtualNode', function() {
-		it('should return undefined', function() {
+		it('should return false', function() {
 			var serialNode = new axe.SerialVirtualNode({
 				nodeName: 'div',
 				attributes: {
describe('no-implicit-explicit-label', function() {
	'use strict';

	var fixture = document.getElementById('fixture');
	var queryFixture = axe.testUtils.queryFixture;
	var check = checks['no-implicit-explicit-label'];
	var checkContext = axe.testUtils.MockCheckContext();

	afterEach(function() {
		fixture.innerHTML = '';
		checkContext.reset();
	});

	it('returns false when there is no label text or accessible text', function() {
		var vNode = queryFixture(
			'<div id="target" role="searchbox" contenteditable="true"></div>'
		);
		var actual = check.evaluate.call(checkContext, null, {}, vNode);
		assert.isFalse(actual);
	});

	it('returns undefined when there is no accessible text', function() {
		var vNode = queryFixture(
			'<label for="target">Choose currency:</label><div id="target" role="searchbox" contenteditable="true"></div>'
		);
		var actual = check.evaluate.call(checkContext, null, {}, vNode);
		assert.isUndefined(actual);
	});

	it('returns undefined when accessible text does not contain label text', function() {
		var vNode = queryFixture(
			'<label for="target">Choose country:</label><div id="target" aria-label="country" role="combobox">England</div>'
		);
		var actual = check.evaluate.call(checkContext, null, {}, vNode);
		assert.isUndefined(actual);
	});

	it('returns false when accessible text contains label text', function() {
		var vNode = queryFixture(
			'<label for="target">Country</label><div id="target" aria-label="Choose country" role="combobox">England</div>'
		);
		var actual = check.evaluate.call(checkContext, null, {}, vNode);
		assert.isFalse(actual);
	});

	describe('SerialVirtualNode', function() {
		it('should return undefined', function() {
			var serialNode = new axe.SerialVirtualNode({
				nodeName: 'div',
				attributes: {
					role: 'combobox',
					'aria-label': 'woohoo'
				}
			});

			var actual = check.evaluate.call(checkContext, null, {}, serialNode);
			assert.isUndefined(actual);
		});
	});
});

Not too sure about this. Just because we didn't give it any children doesn't mean we can assume it doesn't have any. It might be better to leave "children" undefined in SerialVirtualNode, instead of setting it an empty array. Not sure if that opens up a new can of worms. If so I'd be OK with a tech debt issue for it, but this here is a false positive.