/
Running Tests using Karma test framework

Running Tests using Karma test framework

Gathering coverage and test information using the SeaLights Node.js Test Listener is done in a few steps:

See 'Generating an Agent token' for instructions on how to generate a token

Starting the Test Listener

First the SeaLights server needs to be notified that a test stage is starting.

Unix: npx slnodejs start --tokenfile /path/to/sltoken.txt --buildsessionidfile buildSessionId --teststage "Unit Tests" Windows: call npx slnodejs start --tokenfile \path\to\sltoken.txt --buildsessionidfile buildSessionId --teststage "Unit Tests"

See 'Node.js Command Reference - Starting a test stage' for full parameter details

Running your tests

Functional Tests

Before running your functional tests you need to set up the backend server to receive the test footprints. See 'Using Node.js Agents - Running backend server using SeaLights agent'

Once set up you now run your tests normally while generating one or more JUnit xml result files to be reported to the SeaLights server.

Unit Tests

In order to report the test and coverage information to SeaLights you need to run the karma tests while producing coverage information and a JUnit results file.

Upload coverage report files

Once done running the unit tests you upload the coverage report files to the SeaLights server using the nycReport option

Unix: npx slnodejs nycReport --tokenfile /path/to/sltoken.txt --buildsessionidfile buildSessionId Windows: call npx slnodejs nycReport --tokenfile \path\to\sltoken.txt --buildsessionidfile buildSessionId

Upload test results report files

Once done running the tests you upload the test results file to the SeaLights server using the uploadReports option

Unix: npx slnodejs uploadReports --tokenfile /path/to/sltoken.txt --buildsessionidfile buildSessionId --reportFile junit.xml Windows: call npx slnodejs uploadReports --tokenfile \path\to\sltoken.txt --buildsessionidfile buildSessionId --reportFile junit.xml

Ending the Test Stage

Finally the server needs to be notified that a test stage has ended.

Sample command
Unix: npx slnodejs end --tokenfile /path/to/sltoken.txt --buildsessionidfile buildSessionId Windows: call npx slnodejs end --tokenfile \path\to\sltoken.txt --buildsessionidfile buildSessionId

Samples

Running unit tests using Jest

Below, a sample script running the Unit Tests while instrumenting for client side coverage on Unix:

#Install the project dependencies npm install # transpile the code with source maps to the dist folder npm run build # Install the SeaLights agents npm i slnodejs # Create a SeaLights ignore file to only include the src folder echo '**/vendor*.js' > .slignore echo '**/polyfills*.js' >> .slignore # Scan the source files to provide SeaLights the structure of the project npx slnodejs scan --tokenfile /path/to/sltoken.txt --buildsessionidfile buildSessionId --instrumentForBrowsers --outputpath sl_dist --workspacepath dist --scm git --projectRoot `pwd` # Notify SeaLights the Unit Tests are starting npx slnodejs start --tokenfile sltoken.txt --buildsessionidfile buildSessionId.txt --testStage "Unit Tests" # Run the unit tests while ignoring the error code returned from Jest if the tests fail # this should be with source maps, coverage enabled and junit report enabled set +e npm run test set -e # Upload the coverage and tests results to SeaLights npx slnodejs nycReport --tokenfile sltoken.txt --buildsessionidfile buildSessionId.txt npx slnodejs uploadReports --tokenfile sltoken.txt --buildsessionidfile buildSessionId.txt --reportFile junit.xml # Notify SeaLights the Unit Tests have finished npx slnodejs end --tokenfile sltoken.txt --buildsessionidfile buildSessionId.txt

Related content