From 5007a51afd8ca6a4edb754fa95308aede1a22792 Mon Sep 17 00:00:00 2001 From: Stephanie Madison Date: Wed, 15 Apr 2015 17:30:38 -0400 Subject: [PATCH] Fix currentTest name on api. Previously client.api.currentTest.name was an empty string, this fix sets it for each test before running beforeEach --- lib/runner/testsuite.js | 23 +++--- .../before-after/sampleSingleTest.js | 32 +++++++++ .../before-after/syncBeforeAndAfter.js | 4 ++ tests/src/runner/testRunner.js | 70 +++++++++++++++---- 4 files changed, 106 insertions(+), 23 deletions(-) create mode 100644 tests/sampletests/before-after/sampleSingleTest.js diff --git a/lib/runner/testsuite.js b/lib/runner/testsuite.js index 89cf30ae4f..ed42915a03 100644 --- a/lib/runner/testsuite.js +++ b/lib/runner/testsuite.js @@ -84,7 +84,7 @@ TestSuite.prototype.initHooks = function() { hookFn.call(context, api, done); }); }; - })(item, argsCount); + })(item, argsCount); if (index > -1) { self.testResults.steps.splice(index, 1); @@ -150,12 +150,7 @@ TestSuite.prototype.run = function() { } this.deferred.resolve(this.testResults); } else { - var moduleKey = this.getReportKey(); - this.client.api('currentTest', { - name : this.currentTest, - module : moduleKey.replace(path.sep , '/') - }); - + this.setCurrentTest(); this.globalBeforeEach() .then(function() { return self.runTestSuiteModule(); @@ -168,8 +163,8 @@ TestSuite.prototype.run = function() { self.deferred.resolve(self.testResults); }) .catch(function(e) { - this.deferred.reject(e); - }.bind(this)); + self.deferred.reject(e); + }); } return this.deferred.promise; @@ -221,8 +216,18 @@ TestSuite.prototype.onTestCaseFinished = function(results, errors, time) { this.emit('testcase:finished', results, errors, time); }; +TestSuite.prototype.setCurrentTest = function() { + var moduleKey = this.getReportKey(); + this.client.api('currentTest', { + name : this.currentTest, + module : moduleKey.replace(path.sep , '/') + }); + return this; +}; + TestSuite.prototype.runNextTestCase = function(deffered) { this.currentTest = this.module.getNextKey(); + this.setCurrentTest(); var self = this; deffered = deffered || Q.defer(); diff --git a/tests/sampletests/before-after/sampleSingleTest.js b/tests/sampletests/before-after/sampleSingleTest.js new file mode 100644 index 0000000000..b9c631b30e --- /dev/null +++ b/tests/sampletests/before-after/sampleSingleTest.js @@ -0,0 +1,32 @@ +module.exports = { + beforeEach : function(client, callback) { + var testName = client.currentTest.name; + client.globals.test.deepEqual(testName, 'demoTest'); + callback(); + }, + + before : function(client, callback) { + var testName = client.currentTest.name; + client.globals.test.deepEqual(testName, ''); + callback(); + }, + + demoTest : function (client) { + var testName = client.currentTest.name; + client.globals.test.deepEqual(testName, 'demoTest'); + client.end(); + }, + + afterEach : function(callback) { + var client = this.client; + var testName = client.currentTest.name; + client.globals.test.deepEqual(testName, 'demoTest'); + callback(); + }, + + after : function(client, callback) { + var testName = client.currentTest.name; + client.globals.test.deepEqual(testName, null); + callback(); + } +}; \ No newline at end of file diff --git a/tests/sampletests/before-after/syncBeforeAndAfter.js b/tests/sampletests/before-after/syncBeforeAndAfter.js index 65726d639e..c9ec2f26e9 100644 --- a/tests/sampletests/before-after/syncBeforeAndAfter.js +++ b/tests/sampletests/before-after/syncBeforeAndAfter.js @@ -9,9 +9,13 @@ module.exports = { demoTestSyncOne : function (client) { client.url('http://localhost'); + var testName = client.currentTest.name; + client.globals.test.deepEqual(testName, 'demoTestSyncOne'); }, demoTestSyncTwo : function (client) { + var testName = client.currentTest.name; + client.globals.test.deepEqual(testName, 'demoTestSyncTwo'); client.end(); }, diff --git a/tests/src/runner/testRunner.js b/tests/src/runner/testRunner.js index e6dd9ea554..25ebb262e0 100644 --- a/tests/src/runner/testRunner.js +++ b/tests/src/runner/testRunner.js @@ -163,7 +163,7 @@ module.exports = { }, testRunAsyncWithBeforeAndAfter : function(test) { - test.expect(27); + test.expect(34); var testsPath = path.join(process.cwd(), '/sampletests/before-after'); this.Runner.run([testsPath], { seleniumPort : 10195, @@ -198,7 +198,7 @@ module.exports = { }, testRunWithGlobalBeforeAndAfter : function(test) { - test.expect(15); + test.expect(22); var testsPath = path.join(process.cwd(), '/sampletests/before-after'); var beforeEachCount = 0; var afterEachCount = 0; @@ -216,14 +216,14 @@ module.exports = { start_session : true }, function(err, results) { test.equals(err, null); - test.equals(beforeEachCount, 2); - test.equals(afterEachCount, 2); + test.equals(beforeEachCount, 3); + test.equals(afterEachCount, 3); test.done(); }); }, testRunWithGlobalAsyncBeforeEachAndAfterEach : function(test) { - test.expect(15); + test.expect(22); var testsPath = path.join(process.cwd(), '/sampletests/before-after'); var beforeEachCount = 0; var afterEachCount = 0; @@ -245,14 +245,14 @@ module.exports = { start_session : true }, function(err, results) { test.equals(err, null); - test.equals(beforeEachCount, 2); - test.equals(afterEachCount, 2); + test.equals(beforeEachCount, 3); + test.equals(afterEachCount, 3); test.done(); }); }, testRunWithGlobalAsyncBeforeEachAndAfterEachWithBrowser : function(test) { - test.expect(17); + test.expect(25); var testsPath = path.join(process.cwd(), '/sampletests/before-after'); var beforeEachCount = 0; var afterEachCount = 0; @@ -281,14 +281,14 @@ module.exports = { start_session : true }, function(err, results) { test.equals(err, null); - test.equals(beforeEachCount, 2); - test.equals(afterEachCount, 2); + test.equals(beforeEachCount, 3); + test.equals(afterEachCount, 3); test.done(); }); }, testRunWithGlobalReporter : function(test) { - test.expect(15); + test.expect(22); var testsPath = path.join(process.cwd(), '/sampletests/before-after'); var reporterCount = 0; this.Runner.run([testsPath], { @@ -313,7 +313,7 @@ module.exports = { }, testRunWithGlobalAsyncReporter : function(test) { - test.expect(15); + test.expect(22); var testsPath = path.join(process.cwd(), '/sampletests/before-after'); var reporterCount = 0; this.Runner.run([testsPath], { @@ -383,13 +383,18 @@ module.exports = { var src_folders = [ path.join(process.cwd(), 'sampletests/withsubfolders') ]; + var currentTestArray = []; this.Runner.run(src_folders, { seleniumPort : 10195, silent : true, output : false, globals : { - test : test + test : test, + beforeEach : function(client, done) { + currentTestArray.push(client.currentTest); + done(); + } } }, { output_folder : 'output', @@ -398,6 +403,11 @@ module.exports = { reporter : 'junit' }, function(err, results) { test.equals(err, null); + test.deepEqual(currentTestArray, [ + { name: '', module: 'simple/sample' }, + { name: '', module: 'tags/sample' } + ]); + var fs = require('fs'); fs.readdir(src_folders[0], function(err, list) { test.deepEqual(list, ['simple', 'tags'], 'The subfolders have been created.'); @@ -491,6 +501,38 @@ module.exports = { test.done(); }); - } + }, + testRunCurrentTestName : function(test) { + test.expect(8); + var testsPath = path.join(process.cwd(), '/sampletests/before-after/sampleSingleTest.js'); + this.Runner.run([testsPath], { + seleniumPort : 10195, + silent : true, + output : false, + globals : { + test : test, + beforeEach: function(client, done) { + test.deepEqual(client.currentTest, { + name : '', + module : 'sampleSingleTest' + }); + done(); + }, + afterEach: function(client, done) { + test.deepEqual(client.currentTest, { + name : null, + module : 'sampleSingleTest' + }); + done(); + } + } + }, { + output_folder : false, + start_session : true + }, function(err, results) { + test.equals(err, null); + test.done(); + }); + } };