# Compodoc architecture and operating

## Libraries used inside generate static HTML pages

- bootstrap native : 1.1.0
- d3 from d3-flextree : 3.x.x
- deep-iterator : 2.4.0
- es6-shim : 0.35.1
- EventDispatcher
- htmlparser : 2.0.0
- innersvg : 2.x.x
- prism : 1.9.0
- promise
- svg-pan-zoom : 3.5.2
- tablesort : 5.0.2
- vis : 4.20.1
- zepto : 1.2.0
- lunr : 2.1.5

## Entry files

If you are using Compodoc in module mode with a JavaScript file, require('@compodoc/compodoc'), the first entry file is `src/index.ts`.

If you are using Compodoc with the CLI, the first entry file is `src/index-cli.ts`.

## Process

The process of Compodoc is :

- handle CLI flags
- find files to scan using tsconfig.json include and/or exclude options, or use the root folder of tsconfig.json
- scan the files using TypeScript compiler
- generate all the internal stuff
- emit files for each category (modules, components, etc)
- echo the result of the generation.

## Testing

Unit testing is done by running severals documentation generation with many different files and projects.

E2E testing id done with saucelabs service.

### Local unit testing

> npm run test

### Local E2E

1. install selenium-standalone (https://www.npmjs.com/package/selenium-standalone)

> npm install selenium-standalone@latest -g

2. configure selenium-standalone

> selenium-standalone install

3. start selenium-standalone

> selenium-standalone start

4. start local documentation generation in another terminal tab 

> npm run test:simple-doc

5. start local E2E testing

> npm run local-test-e2e-mocha