hashiccandZhihe Li b42ecbff36 Add api client for playwright e2e tests (#2901)
* chore: 🤖 add @openapitools/openapi-generator-cli

* chore: 🤖 Add @nestjs/core and @openapitools/openapi-generator-cli to ignoredBuiltDependencies

These packages use postinstall for a opencollective notice

* chore: 🤖 add package.json scripts for open-api client gen

* chore: 🤖 add openapi generated files

* chore: 🤖 add boundary api client fixture

* chore: 🤖 incorporate api client fixture with base fixture

* chore: 🤖 migrate existing test to use boundary api fixture

* refactor: 💡 remove org cleanup from test

* refactor: 💡 update sorting e2e test to use api client

* refactor: 💡 clean up api client resource clean up logging

* docs: ✏️ update jsdoc links for domain clients

* chore: 🤖 avoid adding copywright headers to generated api

* Add missing copyright headers

* chore: 🤖 remove fetch argument from api client class

The hope was to use request.fetch but playwright's fetch is a
non-standard fetch which causes the generated api client to fail when
using .clone() on the response

* chore: 🤖 add optional OPENAPI_SWAGGER_URL_OR_FILE for openapi-client
generation

The OPENAPI_SWAGGER_URL_OR_FILE env var can be used to specify the
-i flag the generate:api-client script with either:
* a relative path
* an absolute path
* a url like: https://raw.githubusercontent.com/hashicorp/boundary/refs/heads/main/internal/gen/controller.swagger.json

* refactor: 💡 clean up and refactor boundary-api-client fixture

* chore: 🤖 add extra doc links and delete methods

* test: 💍 add test to ensure that api-client fixture works

* test: 💍 update existing e2e test examples with api-client

* docs: ✏️ add comment for api-client e2e test

* docs: ✏️ add additional links to service docs for api clients

* refactor: 💡 cleanup api-client and corresponding test

* docs: ✏️ add api client fixture docs to e2e README

* fix: 🐛 fix regex

* remove unnecessary capture group
* add "-" to regex to allow for url segments like "storage-buckets" in
  "/v1/storage-buckets"

* docs: ✏️ comment potential edge case in e2e api client cleanup

* docs: ✏️ fix comment typo

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>

* docs: ✏️ remove auth flag for generating e2e client

* docs: ✏️ add mention that java is required for generate:api

* chore: 🤖 implement pr feedback

* chore: 🤖 Clean up api client and add more extensive test

* chore: 🤖 fix casing in api-client test

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>

---------

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2025-08-12 18:08:35 -04:00
2025-06-03 12:55:12 -04:00
2025-06-03 12:55:12 -04:00
2025-06-03 12:55:12 -04:00
2020-10-14 08:37:11 -07:00
2024-06-12 11:09:29 -07:00
2025-06-03 12:55:12 -04:00

Boundary UI Monorepo

Validate Monorepo

This monorepo contains multiple projects, including UIs and addons, used by Boundary.

This top-level repository provides limited common tasks, such as installation and commit assistance. However, most tasks must be executed from within a subproject, e.g. running or testing.

Projects

This monorepo contains multiple projects.

Core (addons/core):

Core features use by Boundary UI's, i.e i18n, helpers or components. Project Readme.

API (addons/api):

The API data access layer for Boundary and all the related mocks. Project Readme.

Auth (addons/auth):

Authentication layer for Boundary. Project Readme.

Rose (addons/rose)

Common styles and components shared by Boundary UIs. Project Readme.

Admin (ui/admin)

The Admin UI for Boundary. Project Readme.

Desktop Client (ui/desktop)

The desktop client UI for Boundary. Project Readme.

Prerequisites

You will need the following things properly installed on your computer.

Optional Tooling

Our team finds the following applications useful in day-to-day development workflows. These are merely recommendations. We encourage you to use the tools that best suit you and your personal style.

  • VS Code: Code editor for building and debugging web applications
  • Warp: Terminal application for macOS
  • Homebrew: The missing package manager for macOS and Linux
  • Ember Inspector: Understand and debug Ember applications
  • Postman: Test and inspect APIs

Installation

  • git clone <repository-url> this repository
  • cd boundary-ui
  • pnpm install

Pnpm Commands

List of available project commands. pnpm run <command-name>

Command Description
build Builds Admin UI for production.
test Runs tests in CI mode.
lint Runs ember-template-lint on all of the hbs, js, and sass files.
compliance:audit Checks for issues using pnpm audit with moderate and above criticality.
compliance:licenses Checks that all dependencies have OSS-compatible licenses.
doc:toc Automatically generates a table of contents for the README file.

Contributing

Branching

We follow GitHub Flow.

Building ToC

To autogenerate a ToC (table of contents) for this README, run pnpm doc:toc. Please update the ToC whenever editing the structure of README.

Building Admin UI for Production

See Admin UI README for more information on how to build the Admin UI for production. Be sure to set build-related environment variables as necessary for your target environment, as described in the Environment Variables section of README.

To quickly produce a production build of Admin UI, run from this folder:

pnpm install
pnpm build

Assets are saved to ui/admin/dist/.

Building with a Container

Optionally, you may build the UI within a container. Execute the following command:

docker-compose -f docker-compose-embedding.yml run build

Assets are saved to ui/admin/dist/.

Building Desktop UI for Production

See Desktop UI README for more information on how to build the Desktop UI. Be sure to set build-related environment variables as necessary for your target environment, as described in the Environment Variables section of README.

To quickly produce a production build of Desktop UI, run from this folder:

pnpm install
pnpm build:ui:desktop

In windows, UI is generated using docker to provide a stable UI across platforms.

pnpm install
docker-compose -f docker-compose-embedding.yml run build-desktop-production
pnpm build:ui:desktop:app

To provide a signing identify for macOS build, use BOUNDARY_DESKTOP_SIGNING_IDENTITY environment variable to set signing certificate name (e.g Developer ID Application: * (*)) when building desktop app using pnpm build:ui:desktop:app.

Assets are saved to ui/desktop/electron-app/out/make/. DMG packaged desktop UI is available at asset location as boundary.dmg. EXE archived desktop UI is available at asset location under zip folder.

Connect Boundary UI to Boundary local instance

This describes how to connect local Boundary UI to your local instance of Boundary.

This assumes you already have up and running a Boundary dev instance in your local environment with a listener 127.0.0.1:9200 (default behaviour). Learn how to start a local Boundary dev instance

For Admin

This assumes you are within boundary-ui/ui/admin.

You will need to turn off mirage, tell the UI where to find Boundary and run it: $ ENABLE_MIRAGE=false API_HOST=http://localhost:9200 pnpm start.

Following terminal instructions, open in your browser: http://localhost:4200/.

Once you open the UI you will see the login screen, authenticate using generated admin login name and password.

For Desktop

This assumes you are within boundary-ui/ui/desktop.

You will need to turn off mirage and run it: $ ENABLE_MIRAGE=false pnpm start:desktop.

In login screen, authenticate using generated admin login name and password.

Enter the cluster URL of your Boundary dev instance, by default is: http://localhost:9200.

Committing

We use husky and lint-staged to ensure linting and other checks pass before a commit is completed. Simply do a pnpm install to make sure the hooks are installed.

Use a normal git commit to go through the checks, if you need to skip these checks, use git commit --no-verify to bypass them. However, a consistent commit message will still be enforced even if you use --no-verify.

License Checking

The licenses of dependencies are checking against an allowlist before every commit. This helps catch undesirable licenses sooner (e.g. GPL). If your commit fails due to a non-allowlisted license, you may add it to the allowlist in package.json as long as it is not a GPL variant or UNLICENSED. The change will be verified upon PR. GPL variants and UNLICENSED dependencies will not be accepted.

S
Description
Community fork of HashiCorp Boundary UI (admin web UI + desktop client) rebranded for Threshold. BSL 1.1; not affiliated with HashiCorp/IBM.
Readme
54 MiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 59.1%
TypeScript 29.1%
Handlebars 10.3%
SCSS 1.3%
HTML 0.2%