From bc4c7cb5e08c102c7da46109fc7e8a4043531ca3 Mon Sep 17 00:00:00 2001 From: antonioaltamura Date: Wed, 21 Jul 2021 12:14:40 +0200 Subject: [PATCH 1/7] tidying up test-related scripts --- Gruntfile.js | 56 ---------------------- credentials.js | 23 --------- credentials.sh | 14 ------ credentials.bat => cypress/credentials.bat | 0 cypress/credentials.sh | 21 ++++++++ e2e-runner.bat => cypress/e2e-runner.bat | 7 ++- e2e-runner.sh => cypress/e2e-runner.sh | 9 +++- generate-report.sh | 12 ----- lib/jsorolla | 2 +- package-lock.json | 6 +-- package.json | 14 ++---- prompt.js | 29 ----------- 12 files changed, 44 insertions(+), 149 deletions(-) delete mode 100644 Gruntfile.js delete mode 100644 credentials.js delete mode 100755 credentials.sh rename credentials.bat => cypress/credentials.bat (100%) create mode 100755 cypress/credentials.sh rename e2e-runner.bat => cypress/e2e-runner.bat (93%) rename e2e-runner.sh => cypress/e2e-runner.sh (89%) delete mode 100755 generate-report.sh delete mode 100644 prompt.js diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 6d2cc199c..000000000 --- a/Gruntfile.js +++ /dev/null @@ -1,56 +0,0 @@ - - -module.exports = function (grunt) { - grunt.loadNpmTasks("grunt-shell"); - - // console.log(grunt.option("studies") || "X0"); - - function e2eRunner() { - const studies = grunt.option("studies") ? grunt.option("studies").split(",") : []; - const tasks = []; - - for (let i = 0; i < studies.length; i++) { - tasks.push(["e2e", studies].join(":")); - } - grunt.task.run(tasks); - - grunt.log.ok(["Finished."]); - } - - function shell() { - const exec = require("child_process").execSync; - const cmds = ` -//echo ${grunt.option("study")} > textfile -rm -rf mochawesome-report/ && \ -./credentials.sh npx cypress run --headless --spec 'cypress/integration/002-login.js'; \ -mochawesome-merge mochawesome-report/*.json -o mochawesome-report/cypress-combined-report.json && \ -marge --reportFilename report.html --charts --timestamp _HH-MM_dd-mm-yyyy --reportPageTitle IVA --reportTitle IVA --reportDir ./report mochawesome-report/cypress-combined-report.json && \ -rm -rf 'mochawesome-report/'` - const result = exec(cmds, {encoding: "utf8"}); - grunt.log.writeln(result); - } - - function e2e() { - if (!grunt.option("study")) { - grunt.option("study", this.args[0] || "NULL"); - } - grunt.task.run([ - // "launch test" - // "make report" - ]); - - } - grunt.registerTask("e2e_all", e2eRunner); - grunt.registerTask("e2e", e2e); - grunt.registerTask("shell", shell); - - -/* grunt.initConfig({ - shell: { - command: [ - "ls" - ].join("&&") - } - });*/ - grunt.registerTask("default", ["shell"]); -}; diff --git a/credentials.js b/credentials.js deleted file mode 100644 index 5f25c887a..000000000 --- a/credentials.js +++ /dev/null @@ -1,23 +0,0 @@ -const {exec} = require("child_process"); -const readline = require("readline"); - -const cypressCmd = process.argv.slice(2).join(" "); -console.log("CMD", cypressCmd); -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout -}); - -rl.question("username ", username => { - rl.question("password ", password => { - if (~["aix", "darwin", "freebsd", "linux", "openbsd", "sunos"].indexOf(process.platform)) { - exec(`CYPRESS_username=${username} CYPRESS_password=${password} ${cypressCmd}`); - } else if (~["win32"].indexOf(process.platform)) { - exec(`SET CYPRESS_username=${username}&SET CYPRESS_password=${password}&${cypressCmd}`); - } else { - throw new Error("Error: Platform not recognised"); - } - - rl.close(); - }); -}); diff --git a/credentials.sh b/credentials.sh deleted file mode 100755 index 98d6dfc7b..000000000 --- a/credentials.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -echo -n "Enter your Opencga Username [ENTER]: " -read username -stty -echo -printf "Enter your Opencga Password [ENTER]: " -read password -stty echo -echo -en "\nEnter the FQN of the Study you want to test (leave empty for default) [ENTER]: " -read study - -# echo $study > CYPRESS_study - -CYPRESS_username=$username CYPRESS_password=$password CYPRESS_study=$study "$@" diff --git a/credentials.bat b/cypress/credentials.bat similarity index 100% rename from credentials.bat rename to cypress/credentials.bat diff --git a/cypress/credentials.sh b/cypress/credentials.sh new file mode 100755 index 000000000..19de08833 --- /dev/null +++ b/cypress/credentials.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +#echo -n "Enter your Opencga Username [ENTER]: " +#read username +#stty -echo +#printf "Enter your Opencga Password [ENTER]: " +#read password +#stty echo +#echo -en "\nEnter the FQN of the Study you want to test (leave empty for default) [ENTER]: " +#read study + +# echo $study > CYPRESS_study + +#"re-opencgahadoop@100k_genomes_grch37_germline:RD37" +#"re-opencgahadoop@100k_genomes_grch38_germline:RD38" +#"re-opencgahadoop@100k_genomes_grch38_germline:CG38" +#"re-opencgahadoop@100k_genomes_grch38_somatic:CS38" +study=re-opencgahadoop@100k_genomes_grch38_somatic:CS38 +username=aaltamura +password=Edu666Gen999000 +CYPRESS_username=$username CYPRESS_password=$password CYPRESS_study=$study "$@" diff --git a/e2e-runner.bat b/cypress/e2e-runner.bat similarity index 93% rename from e2e-runner.bat rename to cypress/e2e-runner.bat index 7d14f06e8..90af1553d 100644 --- a/e2e-runner.bat +++ b/cypress/e2e-runner.bat @@ -2,6 +2,11 @@ setlocal EnableExtensions EnableDelayedExpansion rem This script launches IVA e2e tests over one or more Opencga studies in Windows env +rem Params: +rem -u Opencga username. +rem -s Comma-separated list of studies. Please wrap the list in quotes in case of more that one study +rem -h Prints command description +rem rem If -u (username) and -s (studies) params are not provided, it prompts for Opencga username, password, and a comma-separated list of studies @@ -49,7 +54,7 @@ set study=!tmp::=! echo STUDY: %%~a DIR: !study! rem mkdir !study! && dir !study! (if exist mochawesome-report rmdir /S/Q mochawesome-report)^ - && call npx cypress run --env username=%opencgaUser%,password=%opencgaPassword%,study=%%~a --config videosFolder="cypress/videos/!study!",screenshotsFolder="cypress/screenshots/!study!" --headless --spec "cypress/integration/001-header-bar-pre-login.spec.js"^ + && call npx cypress run --env username=%opencgaUser%,password=%opencgaPassword%,study=%%~a --config videosFolder="cypress/videos/!study!",screenshotsFolder="cypress/screenshots/!study!" --headless --spec "cypress/integration/*.js"^ & call npx mochawesome-merge mochawesome-report/*.json -o mochawesome-report/cypress-combined-report.json^ && call npx marge --reportFilename !study!.html --charts --timestamp _HH-MM_dd-mm-yyyy --reportPageTitle IVA_%%~a --reportTitle IVA__%%~a --reportDir report mochawesome-report/cypress-combined-report.json^ && (if exist mochawesome-report rmdir /S/Q mochawesome-report) diff --git a/e2e-runner.sh b/cypress/e2e-runner.sh similarity index 89% rename from e2e-runner.sh rename to cypress/e2e-runner.sh index d50fcd2ff..6ec16491d 100755 --- a/e2e-runner.sh +++ b/cypress/e2e-runner.sh @@ -1,7 +1,14 @@ #!/bin/bash # @file test_runner.sh # @brief This script launches IVA e2e tests over one or more Opencga studies -# @description It takes Opencga username, password, and a comma-separated list of studies (params or prompt) +# @description +# +# Options: +# -u Opencga username. +# -s Comma-separated list of studies. +# -h Prints command description +# +# It takes Opencga username, password, and a comma-separated list of studies (either via params or prompt) #declare -a studies=( # "re-opencgahadoop@100k_genomes_grch37_germline:RD37" diff --git a/generate-report.sh b/generate-report.sh deleted file mode 100755 index ecb5b61a4..000000000 --- a/generate-report.sh +++ /dev/null @@ -1,12 +0,0 @@ -# NOT USED AT THE MOMENT - -# this is not safe as if a test fails .CYPRESS_study file won't be deleted, and in case in the following run of tests the user doesn't define the study the report will end up having inconsistent name -if [[ -f .CYPRESS_study ]];then - value=$(<.CYPRESS_study) - echo "exists VALUE: $value" - .rm .CYPRESS_study -else - echo "doesn't exist" -fi - -marge --reportDir ./report mochawesome-report/cypress-combined-report.json --reportFilename report.html diff --git a/lib/jsorolla b/lib/jsorolla index 7f40a4f7b..b9d3fda01 160000 --- a/lib/jsorolla +++ b/lib/jsorolla @@ -1 +1 @@ -Subproject commit 7f40a4f7ba224afc8eb3ce5abf63f69a272bb607 +Subproject commit b9d3fda012fc246c83f0ff890553c0a6b9ddb8e3 diff --git a/package-lock.json b/package-lock.json index 062806035..ca5e50059 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5116,9 +5116,9 @@ "dev": true }, "cypress": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.7.0.tgz", - "integrity": "sha512-uYBYXNoI5ym0UxROwhQXWTi8JbUEjpC6l/bzoGZNxoKGsLrC1SDPgIDJMgLX/MeEdPL0UInXLDUWN/rSyZUCjQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.0.0.tgz", + "integrity": "sha512-Hhbc7FtbeCSg5Ui2zxXQLynk7IYGIygG8NqTauS4EtCWyp2k6s4g8P4KUZXwRbhuryN/+/dCd1kPtFbhBx8MuQ==", "dev": true, "requires": { "@cypress/request": "^2.88.5", diff --git a/package.json b/package.json index d0241b313..aff410e08 100644 --- a/package.json +++ b/package.json @@ -17,14 +17,10 @@ "package": "mv build iva-$npm_package_version && tar zcvf iva-$npm_package_version.tar.gz iva-$npm_package_version && mv iva-$npm_package_version build", "deploy": "npx webpack && ./docker/docker-build.py push", "eslint": "eslint -c .eslintrc.json . --ignore-pattern '/web_modules/'", - "e2e": "./credentials.sh npx cypress open", - "e2e-win": "credentials.bat npx cypress open", - "e2e-report-spec": "rm -rf mochawesome-report/ && ./credentials.sh npx cypress run --headless --spec 'cypress/integration/002-login.js'; npm run mocha:report && rm -rf 'mochawesome-report/'", - "e2e-report-win-spec": "(if exist mochawesome-report rmdir /S/Q mochawesome-report)&& credentials.bat npx cypress run --headless --spec \"cypress/integration/login.js\"& npm run mocha:report && (if exist mochawesome-report rmdir /S/Q mochawesome-report)", - "e2e-report": "rm -rf mochawesome-report/ && ./credentials.sh npx cypress run --headless --spec 'cypress/integration/*.js'; npm run mocha:report && rm -rf 'mochawesome-report/'", - "e2e-report-win": "(if exist mochawesome-report rmdir /S/Q mochawesome-report)&& credentials.bat npx cypress run --headless --spec \"cypress/integration/*.js\"& npm run mocha:report && (if exist mochawesome-report rmdir /S/Q mochawesome-report)", - "mocha:merge-reports": "mochawesome-merge mochawesome-report/*.json -o mochawesome-report/cypress-combined-report.json", - "mocha:report": "npm run mocha:merge-reports && marge --reportFilename report.html --charts --timestamp _HH-MM_dd-mm-yyyy --reportPageTitle IVA --reportTitle IVA --reportDir ./report mochawesome-report/cypress-combined-report.json; spd-say 'end to end test completed'" + "e2e": "./cypress/credentials.sh npx cypress open", + "e2e-win": "crypress/credentials.bat npx cypress open", + "e2e-report": "./cypress/e2e-runner.sh", + "e2e-report-win": "cypress/e2e-runner.bat" }, "dependencies": { "@fortawesome/fontawesome-free": "^5.11.2", @@ -80,7 +76,7 @@ "copy-webpack-plugin": "^5.1.1", "crisper": "~2.1.1", "css-loader": "^3.4.2", - "cypress": "^7.7.0", + "cypress": "^8.0.0", "cypress-wait-until": "^1.7.1", "esinstall": "^1.0.2", "eslint": "^7.29.0", diff --git a/prompt.js b/prompt.js deleted file mode 100644 index 925cdcd44..000000000 --- a/prompt.js +++ /dev/null @@ -1,29 +0,0 @@ -const {exec} = require("child_process"); -const prompt = require("prompt"); -const cypressCmd = process.argv.slice(2).join(" "); -const schema = { - properties: { - username: { - pattern: /^[a-zA-Z\s\-]+$/, - message: "Name must be only letters, spaces, or dashes", - required: true - }, - password: { - hidden: true, - required: true - } - } -}; -prompt.start(); -prompt.message = ""; - -console.log("cypressCmd", cypressCmd) -prompt.get(schema, function (err, result) { - if (~["aix", "darwin", "freebsd", "linux", "openbsd", "sunos"].indexOf(process.platform)) { - exec(`CYPRESS_username=${result.username} CYPRESS_password=${result.password} ${cypressCmd}`); - } else if (~["win32"].indexOf(process.platform)) { - exec(`SET CYPRESS_username=${result.username}&SET CYPRESS_password=${result.password}&${cypressCmd}`); - } else { - throw new Error("Error: Platform not recognised"); - } -}); From e8ed560b02024d15ecae80983ecb43b9b5865879 Mon Sep 17 00:00:00 2001 From: imedina Date: Wed, 21 Jul 2021 12:27:19 +0100 Subject: [PATCH 2/7] Upgrade JSorolla dependency --- lib/jsorolla | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jsorolla b/lib/jsorolla index 188ecea04..b378397ff 160000 --- a/lib/jsorolla +++ b/lib/jsorolla @@ -1 +1 @@ -Subproject commit 188ecea04ac59a87902cabf07b42c12cb2fbb3bb +Subproject commit b378397ff7559dfd66ee361ab6a79de9fcd49584 From f1913d36df5d3a8891b30843eff6c54637a33d29 Mon Sep 17 00:00:00 2001 From: antonioaltamura Date: Wed, 21 Jul 2021 14:01:37 +0200 Subject: [PATCH 3/7] revert README.md --- README.md | 134 +++++++++++++++++++++++------------------------------- 1 file changed, 57 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index 1e05c875e..46a49e3b0 100644 --- a/README.md +++ b/README.md @@ -1,79 +1,66 @@ -# README +# Overview +The Interactive Variant Analyser (IVA) is the web user interface for OpenCGA that provides unprecedented features for real-time interaction with genomic data. It is suitable for any scale; from the detailed interpretation of a single genomic test through to assessing the genetic diversity of hundreds of thousands of aggregated genomes. It is not just for bioinformaticians; it provides simple and convenient access for biomedical researchers and clinical scientists as well. -## Overview - -IVA is a generic Interactive Variant Analysis browser that can be used for the visualization of biological information from various data sources. IVA uses data from [OpenCGA](https://github.com/opencb/opencga) which is an OpenCB project. +Logo ### Documentation - -You can find IVA documentation and tutorials at: [https://github.com/opencb/iva/wiki](https://github.com/opencb/iva/wiki). +You can find IVA documentation and tutorials at: https://github.com/opencb/iva/wiki. ### Issues Tracking - You can report bugs or request new features at [GitHub issue tracking](https://github.com/opencb/iva/issues). ### Release Notes and Roadmap - Releases notes are available at [GitHub releases](https://github.com/opencb/iva/releases). Roadmap is available at [GitHub milestones](https://github.com/opencb/iva/milestones). You can report bugs or request new features at [GitHub issue tracking](https://github.com/opencb/iva/issues). ### Versioning - IVA is versioned following the rules from [Semantic versioning](http://semver.org/). ### Maintainers - We recommend to contact IVA developers by writing to OpenCB mailing list opencb@googlegroups.com. The main developers and maintainers are: +* Ignacio Medina (im411@cam.ac.uk) (_Founder and Project Leader_) +* Antonio Altamura (antonio.altamura@genomicsengland.co.uk) +* Javier Perez Florido (javier.perez.florido.ext@juntadeandalucia.es) +* Alexis Martínez (alexis.martinez@juntadeandalucia.es) -* Ignacio Medina \(im411@cam.ac.uk\) \(_Founder and Project Leader_\) -* Javier Perez Florido \(javier.perez.florido.ext@juntadeandalucia.es\) -* Alexis Martínez \(alexis.martinez@juntadeandalucia.es\) - -#### Former Contributors - -* Swaathi Kandasaamy \(sk913@cam.ac.uk\) -* Asuncion Gallego \(agallego@cipf.es\) - -#### Contributing +##### Former Contributors +* Swaathi Kandasaamy (sk913@cam.ac.uk) +* Asuncion Gallego (agallego@cipf.es) +##### Contributing IVA is an open-source and collaborative project, currently developement is mainly carried out by Stefan Gräf and Ignacio Medina teams from the University of Cambridge and Joaquin Dopazo team from CIBERER. We appreciate any help and feedback from users, you can contribute in many different ways such as simple bug reporting and feature request. Dependending on your skills you are more than welcome to develop client tools, new features or even fixing bugs. -## How to build - -IVA is developed in HTML5, therefore it is mainly developed in JavaScript and makes a heavy usage of HTML and CSS. It uses Grunt as building tool. IVA also requires of OpenCB JSorolla project to be built, this is a JavaScript library developed for several OpenCB web-based projects, this can be found as Git submodule in IVA. +# How to build +IVA is mainly developed in JavaScript. It requires of OpenCB JSorolla project to be built, this is a JavaScript library developed for several OpenCB web-based projects, it can be found as Git submodule in IVA. -Stable releases are merged and tagged at _master_ branch, you are encourage to use latest stable release for production. Current active development is carried out at _develop_ branch, only building is guaranteed and bugs are expected, use this branch for development or for testing new functionalities. The only dependency of IVA from OpenCB is JSorolla. +Stable releases are merged and tagged at _master_ branch, you are encourage to use latest stable release for production. Current active development is carried out at _develop_ branch, only building is guaranteed and bugs are expected, use this branch for development or for testing new functionalities. ### Prerequisites +To run and build IVA you need: [Node.js](https://nodejs.org/en/) and [npm](https://www.npmjs.com/). -The following technologies are needed to build IVA: [Node.js](https://nodejs.org/en/), [npm](https://www.npmjs.com/) and [Grunt](http://gruntjs.com/getting-started). - -#### Installing Node.js and npm - +##### Installing Node.js and npm To install [Node.js](https://nodejs.org/en/) you can visit [this link](http://blog.teamtreehouse.com/install-node-js-npm-linux). -[npm](https://www.npmjs.com/) stands for _node packaged modules_ and it is the dependency manager of [Node.js](https://nodejs.org/en/). - ### Cloning +IVA is an open-source project and can be downloaded either as package(tar.gz) from GitHub releases or source code by cloning the repository. -IVA is an open-source project and can be downloaded either as package\(tar.gz\) from GitHub releases or source code by cloning the repository. +Default ***develop*** branch can be downloaded by executing: -Default _**develop**_ branch can be downloaded by executing: - -```text +``` $ git clone https://github.com/opencb/iva.git Cloning into 'iva'... -remote: Counting objects: 624, done. -remote: Total 624 (delta 0), reused 0 (delta 0), pack-reused 624 -Receiving objects: 100% (624/624), 139.37 KiB | 0 bytes/s, done. -Resolving deltas: 100% (356/356), done. -Checking connectivity... done. +remote: Enumerating objects: 126, done. +remote: Counting objects: 100% (126/126), done. +remote: Compressing objects: 100% (72/72), done. +remote: Total 10370 (delta 70), reused 85 (delta 38), pack-reused 10244 +Receiving objects: 100% (10370/10370), 4.70 MiB | 61.00 KiB/s, done. +Resolving deltas: 100% (6064/6064), done. ``` -Latest stable release at _**master**_ branch can be downloaded by executing: +Latest stable release at ***master*** branch can be downloaded by executing: -```text +``` $ git clone -b master https://github.com/opencb/iva.git Cloning into 'iva'... remote: Counting objects: 624, done. @@ -83,56 +70,49 @@ Resolving deltas: 100% (356/356), done. Checking connectivity... done. ``` -After this, in both cases, you **must** execute the following command to fetch the JSorolla submodule \(only the first time\): +After this, in both cases, you **must** execute the following command to fetch the JSorolla submodule (only the first time): -```text +``` git submodule update --init ``` -Go to lib/jsorolla and checkout to _**develop**_ branch of Jsorolla by +Go to `./lib/jsorolla` and checkout to ***develop*** branch of Jsorolla by -```text +``` cd lib/jsorolla git checkout develop +npm run install ``` -### Build +### Run +To run IVA in dev mode (hot reload for CSS files and hot restart (aka live reloading) for JS scripts), run -First, you must update JSorolla dependencies, from the root folder execute: +` +npm run serve +`. -```text -cd lib/jsorolla -npm install -``` +### Build +To buil IVA, just run -Finally, to build IVA execute: +` +npm run build +`. -We have to install npm packages for IVA, from the the root folder execute: +### Test +We use [Cypress.io](https://www.cypress.io/) as testing framework. -```text -npm install +Having the project running through the command `npm run serve`, you can run the interactive E2E test suite by running the command ``` - -And now execute: - -```text -npm run build +npm run e2e +``` +or the headless version (no browser window) +``` +npm run e2e-report +``` +for Windows environment, just add the suffix `-win` +``` +npm run e2e-win +npm run e2e-report-win ``` -when completed, all compiled files will be located under the _build_ folder. - -### Testing - -You can copy build content to a web server such as Apache HTTP Server and open your favourite internet browser to open IVA. - -### Execute Tests in development with nightwatch\([http://nightwatchjs.org/](http://nightwatchjs.org/)\) - -Prerequisite: make sure you have JDK installed, with at least version 8. If you don't have it, you can grab it from [http://www.oracle.com/technetwork/java/javase/downloads/index.html](http://www.oracle.com/technetwork/java/javase/downloads/index.html). - -1. npm install --dev -2. Selenium server. Download the latest release .jar from [http://selenium-release.storage.googleapis.com/index.html](http://selenium-release.storage.googleapis.com/index.html). i.e. selenium-server-standalone-3.7.0.jar -3. Chromedriver. Download from [https://sites.google.com/a/chromium.org/chromedriver/downloads](https://sites.google.com/a/chromium.org/chromedriver/downloads) that version which supports your chrome versión. You can review what version fits your browser here [https://chromedriver.storage.googleapis.com/2.33/notes.txt](https://chromedriver.storage.googleapis.com/2.33/notes.txt). -4. Create a bin folder inside your test folder in root path -5. Move selenium bin and chrome bin inside that bin folder. -6. npm run test-e2e \( or ./node\_modules/.bin/nightwatch test/e2e/clinical-prioritization.js if you want execute just one\) - +The headless version will generate an HTML report in `./report`. From cfd73be08b3eafdc00cd01956740a31d47f2ed09 Mon Sep 17 00:00:00 2001 From: antonioaltamura Date: Wed, 21 Jul 2021 14:04:24 +0200 Subject: [PATCH 4/7] logo added in README.md --- README.md | 5 +++-- lib/jsorolla | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 46a49e3b0..a01bd7db0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ +Logo + # Overview -The Interactive Variant Analyser (IVA) is the web user interface for OpenCGA that provides unprecedented features for real-time interaction with genomic data. It is suitable for any scale; from the detailed interpretation of a single genomic test through to assessing the genetic diversity of hundreds of thousands of aggregated genomes. It is not just for bioinformaticians; it provides simple and convenient access for biomedical researchers and clinical scientists as well. -Logo +The Interactive Variant Analyser (IVA) is the web user interface for OpenCGA that provides unprecedented features for real-time interaction with genomic data. It is suitable for any scale; from the detailed interpretation of a single genomic test through to assessing the genetic diversity of hundreds of thousands of aggregated genomes. It is not just for bioinformaticians; it provides simple and convenient access for biomedical researchers and clinical scientists as well. ### Documentation You can find IVA documentation and tutorials at: https://github.com/opencb/iva/wiki. diff --git a/lib/jsorolla b/lib/jsorolla index b378397ff..41da7a77f 160000 --- a/lib/jsorolla +++ b/lib/jsorolla @@ -1 +1 @@ -Subproject commit b378397ff7559dfd66ee361ab6a79de9fcd49584 +Subproject commit 41da7a77f58b26bedae9361981a2b1ef7f0f76dc From 31e81c6745af1fcab63cfd65fec5a994c19f2eee Mon Sep 17 00:00:00 2001 From: antonioaltamura Date: Wed, 21 Jul 2021 14:13:46 +0200 Subject: [PATCH 5/7] README.md logo changed --- README.md | 2 +- src/img/iva_logo.png | Bin 0 -> 18579 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/img/iva_logo.png diff --git a/README.md b/README.md index a01bd7db0..dc4d70083 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Logo +Logo # Overview diff --git a/src/img/iva_logo.png b/src/img/iva_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..22cfa417872a269b2c71d120798ad9b985b58b8f GIT binary patch literal 18579 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 k&Hx+@I2v#?;Ar6g0n8osc66a Date: Wed, 21 Jul 2021 14:22:20 +0200 Subject: [PATCH 6/7] README.md minor improvements. --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dc4d70083..ed1193cd2 100644 --- a/README.md +++ b/README.md @@ -106,14 +106,19 @@ Having the project running through the command `npm run serve`, you can run the ``` npm run e2e ``` -or the headless version (no browser window) + +#### Run tests and generate a report +To run test in headless version (no browser) and generate a report, run ``` npm run e2e-report ``` -for Windows environment, just add the suffix `-win` +for more help, try ```npm run e2e-report -h```. + +For Windows environment, just add the suffix `-win` ``` npm run e2e-win npm run e2e-report-win ``` +for more help, try ```npm run e2e-report-win -h```. -The headless version will generate an HTML report in `./report`. +The HTML report will be generated in `./report`. The filename will have the structure `__