neo4j / neo4j-browser

Neo4j Browser is the general purpose user interface for working with Neo4j. Query, visualize, administrate and monitor the database.
https://neo4j.com
GNU General Public License v3.0
697 stars 348 forks source link
graph-app neo4j

Neo4j Browser

Neo4j Browser is the general purpose graphical user interface for Neo4j. Query, visualize, administer and monitor the database with modern and easy-to-use tools.

neo4j browser screenshot

Demo

You can try out the latest (unreleased) version of Neo4j Browser at http://browser-canary.graphapp.io/.

Keep in mind that you will need to connect to an instance of Neo4j (the database) for most operations in Neo4j Browser. A simple way to get started is through Neo4j Desktop. Once you've started a database it's by default available for Neo4j Browser to connect to on localhost:7687.

Feedback & Contributing

Found a bug or some other problem with Neo4j Browser? Please open an issue.

Have an idea for a new feature? You're welcome to leave suggestions and ideas here.

Contributions welcome! More information in our CONTRIBUTING.md.

Project structure

Browser has a subproject of re-usable components bundled together and exposed as neo4j-arc. Rather than set up mono-repo tooling the we've set up eslint to isolate neo4j-arc and given it a seperate build step. Code in browser can only to import code from neo4j-arc through neo4j-arc aliases (as if it was a seperate project) and neo4j-arc is not allowed to import any code from outside it's own folder.

Development

Running Neo4j Browser locally requires Node.js (^12.4.0) and for dependencies we use yarn (npm install -g yarn). To install dependencies and then start the development server at http://localhost:8080:

yarn install
yarn start

Or to run in production mode:

yarn start-prod

Testing overview

Neo4j Browser has both unit and end to end tests running automatically on every pull request. To run the tests locally:

yarn test-unit runs a linter and then our unit tests.

yarn test-e2e runs our Cypress end to end tests in the easiest, slowest way. Running them with this command requires docker installed and that nothing else runs on ports 7687 and 8080.

Cypress e2e test suite in depth

yarn e2e-open to open the Cypress test runner (requires a fresh installation of Neo4j to run against, expects neo4j 3.5 by default). See details below on how to configure database version.

yarn e2e-local-open to run against an existing server (with a password already set). We use newpassword as the default password here, make sure to pass your password: yarn e2e-local-open --env browser-password=<your-password-here>

To avoid opening the Cypress test runner and just run the tests in the terminal, remove the "-open" suffix from the previous two commands (so yarn e2e and yarn e2e-local respectively).

So to run tests on your existing 4.2 database with the password "hunter2" without opening the Cypress visual test runner: yarn e2e-local --env browser-password=hunter2,server=4.2

All the available options for --env are:

server=3.5|4.0|4.1|4.2|4.3 (default 4.3)
edition=enterprise|community|aura (default enterprise)
browser-password=<your-pw> (default 'newpassword')
include-import-tests=true|false (default false)
bolt-url=<bolt url excluding the protocol> (default localhost:7687)

There are some additional options that can only be set as system environmental variables (meaning they cannot be set using the --env flag as the ones above). These needs to be set before the test command is run.

CYPRESS_E2E_TEST_ENV=local|null (if the initial set of pw should run or not) (default undefined)
CYPRESS_BASE_URL=<url to reach the browser to test> (default http://localhost:8080)

Example: CYPRESS_E2E_TEST_ENV="local" CYPRESS_BASE_URL=http://localhost:30000 cypress open --env server=4.2