Skip to content

Latest commit

 

History

History
74 lines (46 loc) · 2.02 KB

CONTRIBUTE.md

File metadata and controls

74 lines (46 loc) · 2.02 KB

Developing Nominatim-UI

Continuous Integration

Background

Uses Svelte framework, Leaflet for map interaction, Bootstrap for layout styling.

The user interface used to be included in the geocoder. Thus the first version avoided being a redesign and still uses some of the same configuration values. Version 2 was a full refactor using Svelte. Version 3 added theme and easier configuration.

Building the frontend

  • Install dependencies

    yarn install
    
  • After you change files in src directory run

    yarn dev
    

    which will start a webserver on port 9080 and auto-reloads whenever you edit files. Configuration in rollup.config.js.

Testing

The test/ setup uses Mocha to run tests. Tests use Puppeteer to control a Google Chrome headless browser and evaluate with Assert.

  • Run integration test suite (configuration in .mocharc.json)

    yarn test
    API_ON_SAME_PORT=1 yarn test
    

    Setting API_ON_SAME_PORT simulates having both the API and UI on the same server port. That's a rare setup but something https://nominatim.openstreetmap.org/ does so worth testing.

    To run a single test file only

    yarn run rollup -c && yarn run mocha test/details.js
    
  • Run syntax linter (configuration in .eslint.json)

    yarn lint
    

Prepare a release

  1. Update version number in package.json file

  2. Update CHANGES.md file

  3. Commit your changes: git add ... , git commit ..., git push ... etc

  4. Tag release: git tag THE_VERSION_NUMBER, git push --tags

  5. Create release on https://github.com/osm-search/nominatim-ui/releases This (a triggered Github Action) will run yarn build and add the dist/build/bundle.* files.