# Development Workflow
- [Development Workflow](#development-workflow)
- [Running locally](#running-locally)
- [Prerequisites](#prerequisites)
- [Clone repository](#clone-repository)
- [Install dependencies](#install-dependencies)
- [Run some of the e2e applications e.g. router-tab-view](#run-some-of-the-e2e-applications-eg-router-tab-view)
- [Running the tests](#running-the-tests)
- [Testing locally by running e2e tests](#testing-locally-by-running-e2e-tests)
- [Building Packages](#building-packages)
## Running locally
### Prerequisites
Install your native toolchain and NativeScript as described in the docs:
https://docs.nativescript.org/environment-setup.html
### Clone repository
```
$ git clone git@github.com:NativeScript/angular.git
$ cd angular
```
### Install dependencies
```
$ cd angular
$ npm run clean.all
```
### Run some of the e2e applications e.g. router-tab-view
**E2E TESTS STILL NOT IN THIS REPO!** instead use `apps/nativescript-demo-ng`
Install NPM packages (use the local copy of `@nativescript/angular`):
```
$ cd e2e/router-tab-view
$ npm install
```
Start the app:
```
$ ns run android
$ ns run ios
```
Make changes to `@nativescript/angular` and see them applied in the running app.
## Running the tests
Install the NPM dependencies:
```
$ cd apps/nativescript-demo-ng
```
Run the tests:
```
$ ns test ios
$ ns test android
```
## Testing locally by running e2e tests
**E2E TESTS STILL NOT IN THIS REPO!**
NOTE: The steps below describe how to run `renderer` tests, but the same approach can be used to run `router` or any other `e2e` tests.
1. Navigate to `e2e/renderer`
``` bash
cd e2e/renderer
```
2. Install dependencies. This also installs your local copy of the nativescript-angular plugin.
``` bash
npm install
```
3. Make sure to have an emulator set up or connect a physical Android/iOS device.
4. Build the app for Android or iOS
```bash
tns run android/ios
```
5. Install [appium](http://appium.io/) globally.
``` bash
npm install -g appium
```
6. Follow the instructions in the [nativescript-dev-appium](https://github.com/nativescript/nativescript-dev-appium#custom-appium-capabilities) plugin to add an appium capability for your device inside `./e2e/renderer/e2e/config/appium.capabilities.json`.
7. Run the automated tests. The value of the `runType` argument should match the name of the capability that you just added.
``` bash
npm run e2e -- --runType capabilityName
```
## Building Packages
1. Build `@nativescript/angular`:
```
npx nx run angular:build
```
2. Build `@nativescript/zone-js`
```
npx nx run zone-js:build
```
Packages are available in the `dist` folder.