|  |  | # Configure GitLab CI | 
|  |  |  | 
|  |  | https://docs.gitlab.com/ee/ci/yaml/ | 
|  |  |  | 
|  |  | ## Write .gitlab-ci.yml file | 
|  |  |  | 
|  |  | Now we need to create the `.gitlab-ci.yml` file in the root of the project: | 
|  |  |  | 
|  |  | ``` | 
|  |  | image: node-protractor:latest | 
|  |  |  | 
|  |  | cache: | 
|  |  | untracked: true | 
|  |  | key: "$CI_BUILD_REF_NAME" | 
|  |  | paths: | 
|  |  | - node_modules/ | 
|  |  |  | 
|  |  | before_script: | 
|  |  | - npm install | 
|  |  |  | 
|  |  | unit_tests: | 
|  |  | script: | 
|  |  | - npm run test-ci | 
|  |  |  | 
|  |  | e2e_tests: | 
|  |  | before_script: | 
|  |  | - npm run http-server-ci | 
|  |  | script: | 
|  |  | - npm run protractor-ci | 
|  |  | ``` | 
|  |  |  | 
|  |  | It will use `node-protractor:latest` docker image to run tests. We enable caching of `node_modules` folder to avoid reinstalling modules between tests executions. In this configuration we create two tasks `unit_tests` and `e2e_tests` that will be run separately. | 
|  |  | \ No newline at end of file |