diff --git a/lib/interfaces/scenarioConfig.js b/lib/interfaces/scenarioConfig.js index 0892749a9..568ab7d6b 100644 --- a/lib/interfaces/scenarioConfig.js +++ b/lib/interfaces/scenarioConfig.js @@ -83,6 +83,16 @@ class ScenarioConfig { this.test.title = `${this.test.title.trim()} ${tagName}`; return this; } + + /** + * Dynamically injects dependencies, see https://codecept.io/pageobjects/#dynamic-injection + * @param {*} dependencies + */ + injectDependencies(dependencies) { + Object.keys(dependencies).forEach((key) => { + this.test.inject[key] = dependencies[key]; + }); + } } module.exports = ScenarioConfig; diff --git a/lib/ui.js b/lib/ui.js index 2a2631909..e76c3ba09 100644 --- a/lib/ui.js +++ b/lib/ui.js @@ -46,11 +46,6 @@ module.exports = function (suite) { } const test = new Test(title, fn); test.fullTitle = () => `${suite.title}: ${test.title}`; - test.injectDependencies = (deps) => { - Object.keys(deps).forEach((key) => { - test.inject[key] = deps[key]; - }); - }; test.tags = (suite.tags || []).concat(title.match(/(\@[a-zA-Z0-9-_]+)/g)); // match tags from title test.file = file; diff --git a/test/unit/ui_test.js b/test/unit/ui_test.js index 4e5919073..4552970a3 100644 --- a/test/unit/ui_test.js +++ b/test/unit/ui_test.js @@ -110,5 +110,11 @@ describe('ui', () => { scenarioConfig.tag('@user'); scenarioConfig.test.tags.should.include('@user'); }); + + it('should dynamically inject dependencies', () => { + scenarioConfig = context.Scenario('scenario'); + scenarioConfig.injectDependencies({ Data: 'data' }); + assert.equal(scenarioConfig.test.inject.Data, 'data'); + }); }); });