📚 Update development cycle documentation and add placeholder tests

This commit is contained in:
Jan Oberhauser 2019-08-14 13:45:18 +02:00
parent 9630615fc7
commit 97893fed1b
10 changed files with 82 additions and 26 deletions

View file

@ -42,10 +42,7 @@ dependencies are installed and the packages get linked correctly. Here a short g
#### Build Tools #### Build Tools
That all the packages which n8n uses can be installed and compiled correctly The packages which n8n uses depend on a few build tools:
the essential build tools must be installed. This is probably already the case
for the most people but if you are totally new to development or just setting
up a new computer it is probably still missing.
Linux: Linux:
``` ```
@ -60,7 +57,7 @@ npm install -g windows-build-tools
#### lerna #### lerna
n8n is split up in different modules which are all in a single mono repository. n8n is split up in different modules which are all in a single mono repository.
To make development as easy as possible does [lerna](https://lerna.js.org) get To facilitate those modules management, [lerna](https://lerna.js.org) gets
used. It automatically sets up file-links between modules which depend on each used. It automatically sets up file-links between modules which depend on each
other. other.
@ -81,17 +78,17 @@ checked out and set up:
git clone https://github.com/n8n-io/n8n.git git clone https://github.com/n8n-io/n8n.git
``` ```
2. Go into repository folder 1. Go into repository folder
``` ```
cd n8n cd n8n
``` ```
3. Install all dependencies of all modules and link them together: 1. Install all dependencies of all modules and link them together:
``` ```
lerna bootstrap --hoist lerna bootstrap --hoist
``` ```
4. Build all the code: 1. Build all the code:
``` ```
npm run build npm run build
``` ```
@ -109,13 +106,35 @@ npm run start
## Development Cycle ## Development Cycle
While iterating on n8n modules' code, you can run `npm run watch` to automatically build your changes. This will alert you as soon as something gets broken. While iterating on n8n modules code, you can run `npm run dev`. It will then
automatically build your code, restart the backend and refresh the frontend
(editor-ui) on every change you make.
1. `npm run watch` 1. Start n8n in development mode:
```
npm run dev
```
1. hack, hack, hack 1. hack, hack, hack
1. `npm run start` 1. Check if everything still runs in production mode
1. test ```
npm run build
npm run start
```
1. Create tests
1. Run all tests
```
npm run test
```
1. Commit code and create pull request
### Test suite ### Test suite
TODO: how to run jest or other automated test tools The tests can be started via:
```
npm run test
```
If that gets executed in one of the package folders it will only run the tests
of this package. If it gets executed in the n8n-root folder it will run all
tests of all packages.

View file

@ -6,6 +6,7 @@
"build": "lerna exec npm run build", "build": "lerna exec npm run build",
"dev": "lerna exec npm run dev --parallel", "dev": "lerna exec npm run dev --parallel",
"start": "cd packages/cli && node dist/index.js start", "start": "cd packages/cli && node dist/index.js start",
"test": "lerna run test",
"watch": "lerna run --parallel watch" "watch": "lerna run --parallel watch"
}, },
"devDependencies": { "devDependencies": {

View file

@ -0,0 +1,7 @@
describe('Placeholder', () => {
test('example', () => {
expect(1 + 1).toEqual(2);
});
});

View file

@ -16,6 +16,7 @@
"dev": "npm run serve", "dev": "npm run serve",
"lint": "vue-cli-service lint", "lint": "vue-cli-service lint",
"serve": "VUE_APP_URL_BASE_API=http://localhost:5678/ vue-cli-service serve", "serve": "VUE_APP_URL_BASE_API=http://localhost:5678/ vue-cli-service serve",
"test": "npm run test:unit",
"tslint": "tslint -p tsconfig.json -c tslint.json", "tslint": "tslint -p tsconfig.json -c tslint.json",
"test:e2e": "vue-cli-service test:e2e", "test:e2e": "vue-cli-service test:e2e",
"test:unit": "vue-cli-service test:unit" "test:unit": "vue-cli-service test:unit"

View file

@ -1,12 +0,0 @@
// import { shallowMount } from '@vue/test-utils';
// import HelloWorld from '@/components/HelloWorld.vue';
// describe('HelloWorld.vue', () => {
// it('renders props.msg when passed', () => {
// const msg = 'new message';
// const wrapper = shallowMount(HelloWorld, {
// propsData: { msg }
// });
// expect(wrapper.text()).toMatch(msg);
// });
// });

View file

@ -0,0 +1,5 @@
describe('Placeholder.vue', () => {
it('example', () => {
expect(1 + 1).toEqual(2);
});
});

View file

@ -16,6 +16,7 @@
"scripts": { "scripts": {
"dev": "npm run watch", "dev": "npm run watch",
"build": "tsc", "build": "tsc",
"test": "jest",
"tslint": "tslint -p tsconfig.json -c tslint.json", "tslint": "tslint -p tsconfig.json -c tslint.json",
"watch": "tsc --watch" "watch": "tsc --watch"
}, },
@ -45,5 +46,23 @@
"replace-in-file": "^4.1.0", "replace-in-file": "^4.1.0",
"typescript": "~3.5.2", "typescript": "~3.5.2",
"vorpal": "^1.12.0" "vorpal": "^1.12.0"
},
"jest": {
"transform": {
"^.+\\.tsx?$": "ts-jest"
},
"testURL": "http://localhost/",
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"testPathIgnorePatterns": [
"/dist/",
"/node_modules/"
],
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"json",
"node"
]
} }
} }

View file

@ -0,0 +1,7 @@
describe('Placeholder', () => {
test('example', () => {
expect(1 + 1).toEqual(2);
});
});

View file

@ -4,7 +4,8 @@
"es2017" "es2017"
], ],
"types": [ "types": [
"node" "node",
"jest"
], ],
"module": "commonjs", "module": "commonjs",
"esModuleInterop": true, "esModuleInterop": true,
@ -26,6 +27,7 @@
], ],
"exclude": [ "exclude": [
"dist", "dist",
"node_modules/**/*",
"**/*.spec.ts" "**/*.spec.ts"
] ]
} }

View file

@ -0,0 +1,7 @@
describe('Placeholder', () => {
test('example', () => {
expect(1 + 1).toEqual(2);
});
});