Skip to content

Commit

Permalink
fix webpack config; fix end to end tests;
Browse files Browse the repository at this point in the history
  • Loading branch information
kzalite committed May 11, 2021
1 parent 874f717 commit 9bf7dd5
Show file tree
Hide file tree
Showing 9 changed files with 152 additions and 76 deletions.
2 changes: 1 addition & 1 deletion R/r-base/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q build-essential libcurl
RUN R -e 'install.packages("plyr", repos="http://cran.rstudio.com/"); if (!require("plyr")) quit(save="no", status=8)'
RUN R -e 'install.packages("igraph", repos="http://cran.rstudio.com/"); if (!require("igraph")) quit(save="no", status=8)'
# Up-to-date meta package requires R >= 3.5.0
RUN R -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/meta/meta_3.8-0.tar.gz", repos=NULL, type="source"); if (!require("meta")) quit(save="no", status=8)'
RUN R -e 'install.packages("https://cran.r-project.org/src/contrib/Archive/meta/meta_4.9-2.tar.gz", repos=NULL, type="source"); if (!require("meta")) quit(save="no", status=8)'
RUN R -e 'install.packages("base64enc", repos="http://cran.rstudio.com/"); if (!require("meta")) quit(save="no", status=8)'
RUN R -e 'install.packages("truncnorm", repos="http://cran.rstudio.com/"); if (!require("truncnorm")) quit(save="no", status=8)'

Expand Down
4 changes: 1 addition & 3 deletions nightwatch.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ const seleniumServer = require('selenium-server');
const geckodriver = require('geckodriver');

module.exports = {
src_folders: [
'test/endToEnd'
],
src_folders: ['test/endToEnd'],
selenium: {
check_process_delay: 1000,
start_process: true,
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"build-dev": "webpack --config webpack.dev.js",
"build-prod": "webpack --config webpack.prod.js",
"build-local-login": "webpack --config webpack.local.js",
"dev": "webpack --config webpack.dev.js --watch"
"dev": "webpack --config webpack.dev.js --watch",
"test-end-to-end": "nightwatch -c nightwatch.conf.js"
},
"repository": {
"type": "git",
Expand Down
102 changes: 80 additions & 22 deletions test/endToEnd/addModelToAnalysisTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,20 @@
module.exports = {
beforeEach: beforeEach,
afterEach: afterEach,
'Create fixed effect pairwise specific pair model': fixedEffectSpecificPairwiseModel,
'Create fixed effect pairwise specific pair model':
fixedEffectSpecificPairwiseModel,
'Create fixed effect pairwise model': fixedEffectPairwiseModel,
'Create new network model using relative data': relativeNetworkModel,
'Create new network model': netWorkModel,
'Create new nodesplit specific model': nodesplitSpecificModel,
'Create new meta regression model': metaRegressionModel,
// 'Create new meta regression model': metaRegressionModel, FIXME re-enable once gemtc package is fixed
'Create new fixed consistency model': fixedConsistencyModel,
'Create consistency model leaving one specific study out': leaveSpecificStudyOutConsistencyModel,
'Create consistency model leaving one specific study out':
leaveSpecificStudyOutConsistencyModel,
'Create design adjusted consistency model': designAdjustedConsistencyModel,
'Create model with non-default prior': nonDefaultPriorModel,
'Create model with non-default run length parameters': nonDefaultRunLengthModel,
'Create model with non-default run length parameters':
nonDefaultRunLengthModel,
'Extend run length of an existing model': extendRunLenthModel
};

Expand All @@ -33,9 +36,21 @@ const networkModelSettings = {
};

function verifyPairwiseModelContents(browser, modelIndex) {
browser.click('#model-title-' + modelIndex)
.waitForElementVisible('#model-settings-section', constants.MODEL_WAIT_TIME_OUT);
return modelService.verifyCommonContent(browser, constants.MODEL_TITLE, constants.ANALYSIS_TITLE, constants.OUTCOME, 'pairwise', 'fixed')
browser
.click('#model-title-' + modelIndex)
.waitForElementVisible(
'#model-settings-section',
constants.MODEL_WAIT_TIME_OUT
);
return modelService
.verifyCommonContent(
browser,
constants.MODEL_TITLE,
constants.ANALYSIS_TITLE,
constants.OUTCOME,
'pairwise',
'fixed'
)
.assert.containsText('#model-pairwise-comparison', 'Fluoxetine — ')
.waitForElementVisible('#relative-effects-table')
.waitForElementVisible('#study-effect-forest-plot')
Expand All @@ -52,7 +67,14 @@ function verifyPairwiseModelContents(browser, modelIndex) {
}

function verifyMetaRegressionModelContents(browser) {
return modelService.verifyCommonContent(browser, constants.MODEL_TITLE, constants.ANALYSIS_TITLE, constants.OUTCOME, 'regression')
return modelService
.verifyCommonContent(
browser,
constants.MODEL_TITLE,
constants.ANALYSIS_TITLE,
constants.OUTCOME,
'regression'
)
.waitForElementVisible('#convergence-diagnostics-table')
.waitForElementVisible('#covariate-effect-plot')
.waitForElementVisible('#meta-regression-table')
Expand All @@ -65,7 +87,15 @@ function verifyMetaRegressionModelContents(browser) {
}

function verifyFixedConsistencyModelContents(browser) {
return modelService.verifyCommonContent(browser, constants.MODEL_TITLE, constants.ANALYSIS_TITLE, constants.OUTCOME, 'network', 'fixed')
return modelService
.verifyCommonContent(
browser,
constants.MODEL_TITLE,
constants.ANALYSIS_TITLE,
constants.OUTCOME,
'network',
'fixed'
)
.assert.containsText('#model-likelihood', 'binom / logit')
.waitForElementVisible('#convergence-diagnostics-table')
.waitForElementVisible('#relative-effects-table')
Expand All @@ -77,7 +107,13 @@ function verifyFixedConsistencyModelContents(browser) {
}

function verifyLeaveOneOutModelContents(browser) {
return modelService.verifyCommonContent(browser, constants.MODEL_TITLE, constants.ANALYSIS_TITLE, constants.OUTCOME)
return modelService
.verifyCommonContent(
browser,
constants.MODEL_TITLE,
constants.ANALYSIS_TITLE,
constants.OUTCOME
)
.assert.containsText('#model-sub-type', 'leave one out')
.waitForElementVisible('#convergence-diagnostics-table')
.waitForElementVisible('#random-effects-standard-deviation')
Expand All @@ -89,7 +125,13 @@ function verifyLeaveOneOutModelContents(browser) {
}

function verifyDesignAdjustedModelContents(browser) {
return modelService.verifyCommonContent(browser, constants.MODEL_TITLE, constants.ANALYSIS_TITLE, constants.OUTCOME)
return modelService
.verifyCommonContent(
browser,
constants.MODEL_TITLE,
constants.ANALYSIS_TITLE,
constants.OUTCOME
)
.assert.containsText('#model-likelihood', 'normal / identity')
.waitForElementVisible('#convergence-diagnostics-table')
.waitForElementVisible('#random-effects-standard-deviation')
Expand All @@ -104,8 +146,7 @@ function verifyDesignAdjustedModelContents(browser) {

function beforeEach(browser) {
browser.resizeWindow(1366, 728);
loginService.login(browser)
.waitForElementVisible('#analyses-header');
loginService.login(browser).waitForElementVisible('#analyses-header');
}

function afterEach(browser) {
Expand All @@ -123,9 +164,20 @@ function fixedEffectSpecificPairwiseModel(browser) {

analysesService.addDefaultAnalysis(browser);
modelService.addModel(browser, modelSettings);
modelService.verifyCommonContent(browser, constants.MODEL_TITLE, constants.ANALYSIS_TITLE, constants.OUTCOME, 'pairwise', 'fixed')
modelService
.verifyCommonContent(
browser,
constants.MODEL_TITLE,
constants.ANALYSIS_TITLE,
constants.OUTCOME,
'pairwise',
'fixed'
)
.assert.containsText('#model-pairwise-comparison', pairwiseComparison)
.assert.containsText('#diagnostic-label-0', 'd.2.3 (Fluoxetine, Paroxetine)')
.assert.containsText(
'#diagnostic-label-0',
'd.2.3 (Fluoxetine, Paroxetine)'
)
.waitForElementVisible('#relative-effects-table')
.waitForElementVisible('#study-effect-forest-plot')
.waitForElementVisible('#study-effect-funnel-plot')
Expand All @@ -147,7 +199,8 @@ function fixedEffectPairwiseModel(browser) {
};

analysesService.addDefaultAnalysis(browser);
modelService.addModel(browser, modelSettings)
modelService
.addModel(browser, modelSettings)
.waitForElementVisible('#model-title-0')
.waitForElementVisible('#model-title-1');
verifyPairwiseModelContents(browser, 0);
Expand All @@ -157,7 +210,8 @@ function fixedEffectPairwiseModel(browser) {
function relativeNetworkModel(browser) {
analysesService.addAnalysis(browser, '/parkinson-shared.csv');
modelService.addModel(browser, networkModelSettings);
modelService.verifyNetworkModelContents(browser)
modelService
.verifyNetworkModelContents(browser)
.waitForElementVisible('#contrast-residual-deviance-table');
}

Expand All @@ -175,7 +229,8 @@ function nodesplitSpecificModel(browser) {
modelSubType: '#node-split-specific-type-radio'
};
analysesService.addDefaultAnalysis(browser);
modelService.addModel(browser, modelSettings)
modelService
.addModel(browser, modelSettings)
.assert.containsText('#model-label', constants.MODEL_TITLE)
.assert.containsText('#model-view-analysis', constants.ANALYSIS_TITLE)
.assert.containsText('#model-view-outcome', constants.OUTCOME)
Expand Down Expand Up @@ -237,8 +292,8 @@ function nonDefaultPriorModel(browser) {
function nonDefaultRunLengthModel(browser) {
analysesService.addDefaultAnalysis(browser);
modelService.addModelWithRunLengthParameters(browser, networkModelSettings);
browser
.assert.containsText('#burn-in-iterations', 1000)
browser.assert
.containsText('#burn-in-iterations', 1000)
.assert.containsText('#inference-iterations', 2000)
.assert.containsText('#thinning-factor', 2);
}
Expand All @@ -257,9 +312,12 @@ function extendRunLenthModel(browser) {
.clearValue('#nr-thinning-factor-input')
.setValue('#nr-thinning-factor-input', 2)
.click('#submit-add-model-button')
.waitForElementVisible('#model-settings-section', constants.MODEL_WAIT_TIME_OUT)
.waitForElementVisible(
'#model-settings-section',
constants.MODEL_WAIT_TIME_OUT
)
.assert.containsText('#model-label', refinedModelTitle)
.assert.containsText('#burn-in-iterations', 1000)
.assert.containsText('#inference-iterations', 2000)
.assert.containsText('#thinning-factor', 2);
}
}
38 changes: 22 additions & 16 deletions test/endToEnd/nodeSplitTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ module.exports = {
beforeEach: beforeEach,
afterEach: afterEach,
'Create node split model from a consistency model': createNodeSplit,
'Check missing title when creating nodesplit model from a consistency model': missingtTitleAndCancel,
'Check missing title when creating nodesplit model from a consistency model':
missingtTitleAndCancel,
'Create consistency model from a node split model': createConsistencyModel
};

Expand All @@ -16,34 +17,35 @@ const modelService = require('./models/modelService');
const NODE_SPLIT_MODEL_TITLE = 'Nodesplit model (Fluoxetine - Paroxetine)';

function checkNodeSplitOverviewForConsistencyModel(browser) {
modelService.addDefaultModel(browser)
modelService
.addDefaultModel(browser)
.click('#node-split-overview-link')
.waitForElementVisible('#nodesplit-overview-header');
browser
.assert.containsText('#analysis-title-header', constants.ANALYSIS_TITLE)
browser.assert
.containsText('#analysis-title-header', constants.ANALYSIS_TITLE)
.assert.containsText('#outcome-header', constants.OUTCOME)
.assert.containsText('#effects-type', 'random')
.assert.containsText('#imputed-outcome-scale', '1.1321 (imputed)')
.assert.containsText('#imputed-outcome-scale', '1.13')
.assert.containsText('#imputed-outcome-scale', '(imputed)')
.assert.containsText('#likelihood-link', 'binom / logit')
.assert.containsText('#consistency-model-title', constants.MODEL_TITLE)
.assert.containsText('#random-effects-standard-deviation', '0.3').pause(100)
.assert.containsText('#random-effects-standard-deviation', '0.3')
.pause(100)
.assert.containsText('#deviance-information-criterion', '26.');

browser.click('#create-node-split-model-button-0')
browser
.click('#create-node-split-model-button-0')
.waitForElementVisible('#create-model-header');
}

function beforeEach(browser) {
browser.resizeWindow(1366, 728);
loginService.login(browser)
.waitForElementVisible('#analyses-header');
loginService.login(browser).waitForElementVisible('#analyses-header');
analysesService.addDefaultAnalysis(browser);
}

function afterEach(browser) {
analysesService
.deleteFromList(browser)
.end();
analysesService.deleteFromList(browser).end();
}

function createNodeSplit(browser) {
Expand All @@ -64,8 +66,8 @@ function createNodeSplit(browser) {

function missingtTitleAndCancel(browser) {
checkNodeSplitOverviewForConsistencyModel(browser);
browser.
clearValue('#title-input')
browser
.clearValue('#title-input')
.waitForElementVisible('#missing-title-warning')
.click('#close-model-button')
.waitForElementVisible('#create-node-split-model-button-0');
Expand All @@ -80,14 +82,18 @@ function createConsistencyModel(browser) {
};
const networkModelTitle = 'Network model';

modelService.addModel(browser, modelSettings)
modelService
.addModel(browser, modelSettings)
.click('#node-split-overview-link')
.waitForElementVisible('#nodesplit-overview-header');
browser
.click('#create-consistency-model-button')
.click('#confirm-create-model-button')
.assert.containsText('#consistency-model-title', networkModelTitle)
.click('#run-network-model-button')
.waitForElementVisible('#model-settings-section', constants.MODEL_WAIT_TIME_OUT);
.waitForElementVisible(
'#model-settings-section',
constants.MODEL_WAIT_TIME_OUT
);
modelService.verifyNetworkModelContents(browser, networkModelTitle);
}
36 changes: 17 additions & 19 deletions test/endToEnd/pageTitleTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ const modelService = require('./models/modelService');
const errorService = require('./util/errorService');

function addAnalysisAndModel(browser) {
loginService.login(browser)
.waitForElementVisible('#analyses-header');
loginService.login(browser).waitForElementVisible('#analyses-header');
analysesService.addDefaultAnalysis(browser);
modelService.addDefaultModel(browser);
return browser;
Expand All @@ -37,43 +36,42 @@ function loginPage(browser) {
browser
.url(constants.TEST_URL)
.waitForElementVisible('#signinButton')
.getTitle(function(title) {
.getTitle(function (title) {
browser.assert.equal(title, 'gemtc.drugis.org');
});
errorService.isErrorBarNotPresent(browser);
}

function analysesView(browser) {
loginService.login(browser)
loginService
.login(browser)
.waitForElementVisible('#analyses-header')
.getTitle(function(title) {
.getTitle(function (title) {
browser.assert.equal(title, 'Analyses');
});
errorService.isErrorBarHidden(browser);
}

function modelsView(browser) {
loginService.login(browser)
.waitForElementVisible('#analyses-header');
analysesService.addDefaultAnalysis(browser)
.getTitle(function(title) {
browser.assert.equal(title, constants.ANALYSIS_TITLE);
analysesService.deleteFromList(browser);
});
loginService.login(browser).waitForElementVisible('#analyses-header');
analysesService.addDefaultAnalysis(browser).getTitle(function (title) {
browser.assert.equal(title, constants.ANALYSIS_TITLE);
analysesService.deleteFromList(browser);
});
}

function modeltitlesView(browser) {
addAnalysisAndModel(browser)
.getTitle(function(title) {
browser.assert.equal(title, constants.MODEL_TITLE);
analysesService.deleteFromList(browser);
});
addAnalysisAndModel(browser).getTitle(function (title) {
browser.assert.equal(title, constants.MODEL_TITLE);
analysesService.deleteFromList(browser);
});
}

function RefineModelView(browser) {
addAnalysisAndModel(browser)
.click('#refine-model-button')
.getTitle(function(title) {
.waitForElementVisible('#create-model-header')
.getTitle(function (title) {
browser.assert.equal(title, 'Refine model');
analysesService.deleteFromList(browser);
});
Expand All @@ -82,7 +80,7 @@ function RefineModelView(browser) {
function NodesplitOverview(browser) {
addAnalysisAndModel(browser)
.click('#node-split-overview-link')
.getTitle(function(title) {
.getTitle(function (title) {
browser.assert.equal(title, constants.MODEL_TITLE);
analysesService.deleteFromList(browser);
});
Expand Down
Loading

0 comments on commit 9bf7dd5

Please sign in to comment.