* test: 💍 add e2e test case for sort target name
* chore: 🤖 update desktop e2e workflow to use boundary ent repo
* fix: 🐛 make sure org is fully loaded before sorting
* fix: 🐛 add missing step to move binary to correct folder
* refactor: 💡 update to wait for table load in test
* test: 💍 validate cache status
* fix: 🐛 remove unneeded flag so tests use enos binary
* refactor: 💡 use commit from ui-ent repo to build binary
* fix: 🐛 update selector due to changes from main merge
* fix: 🐛 update selector for dropdown link
* fix: 🐛 reopen dropdown after switching org + add workflow input
* docs: ✏️ clean up comments in workflow file
* chore: 🤖 import explicit mirage references
* chore: 🤖 add mirage setupMirage helper
* chore: 🤖 working example with application adapter test
* chore: 🤖 use internal setupMirage test helper from api addon
* chore: 🤖 conditionally load mirage
* chore: 🤖 filter mirage folder inclusion in production builds
* chore: 🤖 drop ember-mirage and use our own test helpers
* chore: 🤖 collapse reference to import declaration
* docs: ✏️ add comment better explaining the mirage test env
* chore: 🤖 update configuration and manage mirage-related deps
* fix: 🐛 restore ipc mock and add missing checkOS handler
* chore: 🤖 add comment explaining omitting mirage deps in build
* chore: 🤖 allow mirage.enabled to include deps and handlers
* chore: 🤖 re-enable mirage for core dummy app
* Add missing copyright headers
* chore: 🤖 use embroider macros to conditionally start mirage
* docs: ✏️ update api readme for mirage changes
* chore: 🤖 replace remaining ember-cli-mirage references
* chore: 🤖 add mirage to test builds
* fix: 🐛 ensure that auto mirage start doesn't happen in test env
* chore: 🤖 use const instead of var
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
* refactor: 💡 use cleaner logic for excluded api build modules
* fix: 🐛 handle issue where importSync was too eager
This was fixed by bumping the @embroider/macros dependency that includes
a fix to this issue:
https://github.com/embroider-build/embroider/pull/2511
* refactor: 💡 move mirage from addon to app directory
* refactor: 💡 update mirage test helper to be a factory
* chore: 🤖 exclude mirage directory when necessary at build time
* chore: 🤖 add miragejs as admin dev dependency
* refactor: 💡 update reference to startMirage
* chore: 🤖 update local mirage test helper
* chore: 🤖 change import path for mirage on desktop
* chore: 🤖 update imports in tests for startMirage
* chore: 🤖 update startMirage imports for api addon tests
* chore: 🤖 add miragejs dev dep to desktop
* docs: ✏️ update README
* chore: 🤖 set up setupMirage for core tests
* chore: 🤖 fix copyright header
* Add missing copyright headers
---------
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
* refactor: 💡 use Hds::Time component
* refactor: 💡 fix data test selector
* refactor: 💡 standardardized date/time format
* refactor: 💡 fix tests and remove date helpers
* fix: 🐛 fixed helper test import
A new param @ariaDescription that was added to addons/rose edit-toggle component
which now allows us to define the value of aria-description per a11y requirements.
With this change, the User detail edit form button now includes a value for aria-description.
✅ Closes: FE-112
---------
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
* chore: 🤖 add asciinema-player dependency
* chore: 🤖 migrate component and test from addon repo
Migrated from repo:
https://github.com/hashicorp/ember-asciinema-player
At commit:
09db104dd1db96348351a1cf50315cd00c3189dd
* chore: 🤖 update component references in tests
* chore: 🤖 swap styles import to asciinema-player
Styles imported from ember-asciinema-player are only importing styles
from asciinema-player.
See:
https://github.com/hashicorp/ember-asciinema-player/blob/09db104dd1db96348351a1cf50315cd00c3189dd/app/styles/%40hashicorp/ember-asciinema-player.scss#L6
* chore: 🤖 Use specific version of ascii-cinema for our styles
See:
https://github.com/hashicorp/boundary-ui/pull/2828/commits/397cedc94e6e086e5b46bc01519b4befe1574e3d
* chore: 🤖 import setupRenderingTest from app helpers
* chore: 🤖 update reference to test .cast file fetched
* style: 💄 prettier formatting updates
* chore: 🤖 refactor to using element modifier
* chore: 🤖 remove unused/unreferenced property
* chore: 🤖 remove unused css classname
* chore: 🤖 rename asciinema player component class name
Rename class name to match the class naming conventions for generated
components
* refactor: 💡 simplify implementation
* refactor: 💡 replace addon component with app component
* fix: 🐛 pass in data as an object with the key data
* refactor: 💡 remove @tracked on player property
The player property doesn't need the @tracked because its not being used
by ember to render. It is not rendered itself and changes to the
property do not impact what ember renders. The player property only
needs to track the previous player reference during teardown
* chore: 🤖 remove hashicorp/ember-asciinema-player dependency
* fix: 🐛 update to correct location of asciinema-player.css
---------
Co-authored-by: Lisbet Alvarez <107949262+lisbet-alvarez@users.noreply.github.com>
* refactor: 💡 credential type radio field to be select field
* refactor: 💡 radio component to be select component
* test: 💍 fix e2e test page
* test: 💍 add correct selector to e2e test
* test: 💍 fix
* chore: 🤖 hoist esbuild to fix dependency resolutions
* chore: 🤖 add back esbuild as an explicit dep for api addon
This addresses an eslint error but also is more explicit
with the api addon using esbuild directly
Electron has an issue being reported with latest macos tahoe:
https://github.com/electron/electron/issues/48311
This has been fixed in:
38.2.0
37.6.0
36.9.2
We are currently on 38.0.0 so this commit bumps electron to 38.2.0
One of the changes that was made was not retrieving all resources for the dropdown filters.
This had an unintended consequence when displaying the selected filters as it's possible for the selected filter to not be in the list of allFilters.
There's two main scenarios this happens (the prerequisite is having more filter options than we display which is 250):
* When filtering down the dropdown filters which means it might not be in the allFilters options. This was fixed by keeping track of all the searched options to be able to display.
* A user uses a query string or bookmarked a URL and goes to it directly. If the option isn't in the initial load, we won't have the actual option. In this case, I changed it to at least just display the ID instead of not showing up at all. Otherwise I'd have to load these selected options separately from the initial load which doesn't seem worth for this edge case.
This commit adds the ability to search across multiple tables with joins which unlocks a better search experience in the case of tables that source their data from multiple tables.
This commit has a few notable changes:
1. A simple attempt at establishing a pattern for using SELECT statements. This will be useful in the future for joins/subquery support.
2. Expanded usage of searching to be able to pass instead of just a string, an object that lets a consumer choose which columns to search on.
3. Decouple our session recording filters from being loaded from the route model hook which is a departure from our convention. This has the benefit of actually letting the page first load and having the filters load async so the page doesn't wait for the filters to finish. This is also much faster to query for each individual filter option from SQLite rather than returning all data to filter in application code.
* fix: 🐛 properly show username for oidc auth method in user menu
* test: 💍 fix admin ui tests
* test: 💍 fix desktop ui tests
* refactor: 💡 admin to not store username in authenticated object
* refactor: 💡 use getter in app controller
* test: 💍 POC for how we could update our tests to use auth account
* refactor: 💡 remove unused service
* test: 💍 fix all tests in ui/admin
* test: 💍 revert one change
* refactor: 💡 update ui/desktop w/ feedback + fix tests
* refactor: 💡 add in error handling
* refactor: 💡 cleanup unused service
* test: 💍 fix e2e test selector
✅ Closes: https://hashicorp.atlassian.net/browse/ICU-17231
When running this test against an AWS cluster, this operation was resulting in 504s. This was potentially hitting some AWS rate limits when making these requests concurrently.
* fix: 🐛 fix bug with the e2e test fixture hanging
* test: 💍 update cred store label locators with exact match
* test: 💍 update createTargetWithAddressAndAlias with target type
* fix(e2e): Address flakiness during screen navigation
* fix(e2e): Fix function call
* fix(e2e): Address flakiness in connection
* fix(e2e): Make locator explicit to avoid conflict when an ID has `ok`
* fix(e2e): Fix URL now that project page defaults to showing targets
* chore: 🤖 add ember-a11y-ignore tool
* chore: 🤖 fix handling existing setRunOptions imports
* chore: 🤖 move codemod to support folder
* chore: 🤖 fix edge case for handling property key names
* chore: 🤖 handle case where multiple of same violation in test
This fixes a bug where multiple cases of the same violation would end up
with multiple entries
* chore: 🤖 ignore axe rules that are currently failing in admin
* chore: 🤖 ignore axe rules that are currently failing in desktop
* docs: ✏️ add a comment explaining the codemod
* chore: 🤖 include test.each cases for a11y ignores
* fix: 🐛 handle test.each test cases for a11y ignore codemod
* ci: 🎡 consolidate ember a11y reports and upload as gh artifact
* ci: 🎡 Bump test timeout for a11y tests
* chore: 🤖 run a11y tests in parallel
* chore: 🤖 only run a11y audit against acceptance tests
* chore: 🤖 restore ember test in place of ember exam
testing whether or not ember test hangs with three tests timing out like
ember exam does
* ci: 🎡 output a11y reports filtered down in ci
* ci: 🎡 attempt to fix shell exit code for a11y test failures
* ci: 🎡 add step names for outputting a11y test report summary
* 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>
* chore: 🤖 update @glimmer/component to v2
* chore: 🤖 bump ember-a11y-refocus to fix focus errors in tests
Previous runs had three failing tests related to focusing from
ember-a11y-refocus:
* global failure: TypeError: Cannot read properties of null (reading 'focus')
Tests failing with this error were fixed as part of this PR:
https://github.com/ember-a11y/ember-a11y-refocus/pull/347
After bumping to a later version of ember-a11y-refocus, the
existing failing tests now pass
* When clicking on project in list, go to targets page
* Move Sessions link to bottom of main list on Project scope sidebar
* Add backlink to Orgs
* Add backlink to Global
* Fix some tests
* test: 💍 fix a couple more tests
---------
Co-authored-by: Lisbet Alvarez <lisbet.alvarez@hashicorp.com>
Co-authored-by: Lisbet Alvarez <107949262+lisbet-alvarez@users.noreply.github.com>
pnpm by default refuses to run install scripts, some packages require
these and others are use install scripts as a way to provide messages.
Instead of a pnpm warning this commit ensures that the package that
is detected with an install script must be either listed in
ignoredBuiltDependencies or onlyBuiltDependencies. Running pnpm
install will fail until a package has been categorized
As part of this commit the packages that were previously listed
as warnings have been categorized under ignoredBuiltDependencies
since their install scripts are not required for the functionality
of the package
* refactor: 💡 hide manage custom scopes button when using keyword
* refactor: 💡 update to only allow projects for global roles
* refactor: 💡 clean-up
✅ Closes: https://hashicorp.atlassian.net/browse/ICU-17197
* refactor: 💡 add custom sort
* test: 💍 fix tests
* test: 💍 fix more tests
* refactor: 💡 use reusable sort function for name
* refactor: 💡 use sort util in all resources w/ optional name
* Add missing copyright headers
* test: 💍 fix broken tests & add tests for new util
* refactor: 💡 add name custom sort to users
* test: 💍 fix import in tests
* refactor: 💡 add custom name sort to scopes
* test: 💍 pr feedback on util test cases
* refactor: 💡 move sort function into object (pr feedback)
* chore: 🤖 remove packageManager field from package.json
* chore: 🤖 migrate yarn resolutions to pnpm overrides
* chore: 🤖 generate pnpm-lock.yml by using: pnpm import yarn.lock
* chore: 🤖 remove yarn.lock file
* chore: 🤖 migrate workspace configuration
* chore: 🤖 remove .yarn and .yarnrc.yml config
* chore: 🤖 update .copyright.hcl to ignore root pnpm files
* chore: 🤖 migrate husky pre-commit hook from yarn to pnpm
* chore: 🤖 migrate package.json scripts from yarn to pnpm
* chore: 🤖 update rose package.json & build to use explicit deps
* chore: 🤖 remove unused cp metadata.json command in pjson script
The cp metadata.json to dist was added in:
d19a251
The addons/rose/metadata.json no longer exists so it can't be copied
* chore: 🤖 migrate electron-app package.json scripts to pnpm
* chore: 🤖 create pnpm workspace for electron-app w/ hoisted deps
* chore: 🤖 migrate electron-app yarn lockfile to pnpm lockfile
Used "pnpm import yarn.lock"
* chore: 🤖 migrate electron-app overrides
node-gyp isn't needed since the fork is used via @electron/node-gyp
see: https://github.com/electron/node-gyp?tab=readme-ov-file#node-gyp---nodejs-native-addon-build-tool
* chore: 🤖 add trusted deps to be built to onlyBuiltDependencies
This is a pnpm feature that increases security. By defining these
dependencies they are being trusted to allow install hooks,
including postinstall. See:
https://pnpm.io/settings#onlybuiltdependencies
* chore: 🤖 add electron-app pnpm files to copyright header ignore
* chore: 🤖 remove yarn references from .*ignore files
* chore: 🤖 migrate --yarn to --pnpm for ember-cli-update.json
This isn't clearly documented but something that is supported
and can be found in other ember apps:
https://github.com/search?q=--pnpm+ember-cli-update.json&type=code
* chore: 🤖 migrate ci and related scripts to use pnpm
The cache is migrated to use the cache supported by
actions/setup-node@v4, an action we are already using. This is the
recommended way by pnpm:
https://pnpm.io/continuous-integration#github-actions
This commit also ensures that all github actions are using
consistent versions of actions/setup-node and pnpm/action-setup
* docs: ✏️ update documentation to use pnpm instead of yarn
* chore: 🤖 use explicit asciinema-player dependency
Because we override styles on asciinema-player we depend on their
styles. What might be a minor non-breaking change in their version could
(and did) break our style expectations in our overrides.
* chore: 🤖 run pnpm install and commit lockfile changes
* chore: 🤖 Remove ember-inflector from being overidden
https://github.com/hashicorp/boundary-ui/pull/2828#discussion_r2110380711
* chore: 🤖 remove highlight.js from pnpm overrides
https://github.com/hashicorp/boundary-ui/pull/2828#discussion_r2109847938
* chore: 🤖 remove additional unnecessary files from ignore files
* docs: ✏️ fix pnpm doc links
* chore: 🤖 use corepack to specify packageManager in package.json
* chore: 🤖 let pnpm action in ci use packageManager for version
https://github.com/pnpm/action-setup?tab=readme-ov-file#version
* docs: ✏️ fix broken pnpm website links
* feat: 🎸 implement sort for sessions
* test: 💍 fix bug + add tests
* Add missing copyright headers
* refactor: 💡 remove fix so it can be its own PR
✅ Closes: https://hashicorp.atlassian.net/browse/ICU-17087
* fix: 🐛 refocus on route changes when attempting to search
* refactor: 💡 update condition
* refactor: 💡 prevent refocus for more use cases like filtering
* refactor: 💡 use router service instead of window object
* refactor: 💡 PR feedback (use param finder instead of regex)
* test: 💍 update test title
* test: 💍 refactor tests to use test.each
* remove rose::button files and imports
* remove rose btn utilities
* remove btn class from app.scss
* delete rose btn styling, component files
* update test
* remove playground.hbs, team agreed
* refactor dummy/app/templates/index.hbs to use hds btn
* replace rose::button in ui/desktop
* replace .rose-button in ui/admin acceptance tests
* update @iconOnly to @isIconOnly
* add required @text arg for isIconOnly btns
* re-add title html element
* add _button.scss for custom styling
* add hover styling over close btn
* fix a bug when we hover in dark mode
* fix bug in main, hover white should trigger in dark mode
* remove &:not(:disabled) on btn close window class
* fix merge conflict
* fix styling
* remove rose form input component folder
* remove component integration test
* remove _input styling and import ref
* remove import from addons
* remove app.scss form input styling
* replace form.input with Hds::Form::TextInput::Field
* remove assertions for disabled state, remove Hds replacement
* remove test that checks input field that no longer exists
* remove rose::form::input component from playgrouund.hbs
* remove @use 'input'
* replace with hds::form::label
* test Hds::Form::TextInput::Field
* add event handler
* add hds text componenet to grant.value fields
* fix test failures
* replace with set-from-event
* address feedback
* add title html element to hds component
* remove rose::icon test
* remove .rose-icon class styling from ui/admin
* remove .rose-icon class styling from ui/desktop
* remove .rose-icon class styling from addons/
* remove @import 'icon'
* remove icon.js
* feat: 🎸 scope picker component (#2646)
* feat: 🎸 scope picker component
---------
Co-authored-by: lisbet-alvarez <lisbet-alvarez@users.noreply.github.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
* refactor: 💡 use hds side nav w/ hds frame instead of rose (#2688)
* refactor: 💡 use hds side nav w/ hds frame instead of rose
* test: 💍 clean up selectors
* fix: 🐛 specificity of style override
* refactor: 💡 use hds side nav list instead of target and portal
* refactor: 💡 revert to using portal component & update scss
* docs: ✏️ update comment
* refactor: 💡 use custom class names for containers
* refactor: 💡 pr feedback (use @hasSidebar arg)
* refactor: 💡 fix onboarding page & fix settings title
* refactor: 💡 remove unneeded template file (pr feedback)
* test: 💍 fix tests due to merge conflicts
* test: 💍 add missing test selector due to merge conflict
* test: 💍 fix more broken tests due to merge conflicts
* chore: 🤖 update yarn.lock & update hds version to 4.18.1
* chore: 🤖 fix e2e test cases due to side nav refactor (#2751)
* chore: 🤖 fix e2e test cases due to side nav refactor
* test: 💍 fix e2e test for desktop
---------
Co-authored-by: lisbet-alvarez <lisbet-alvarez@users.noreply.github.com>
Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
OIDC accounts are guaranteed to have a subject claim which we should
display. Currently we only look at email and full_name which
are all optional for OIDC claims. Also added deep links for accounts.
✅ Closes: https://hashicorp.atlassian.net/browse/ICU-16634
* chore: 🤖 add test selectors to roles list tests
* chore: 🤖 add test selectors for roles global-scope tests
* chore: 🤖 add TABLE_RESOURCE_LINK to global-scope tests
* test: 💍 change exists to isVisible
* chore: 🤖 add test selectors to roles grants tests
* refactor: 💡 create custom selector for grants tests
* refactor: 💡 use new FORM selector
* chore: 🤖 add test selectors to roles list tests
* chore: 🤖 add test selectors for roles global-scope tests
* chore: 🤖 add TABLE_RESOURCE_LINK to global-scope tests
* test: 💍 change exists to isVisible
* chore: 🤖 add test selectors to roles read tests
* chore: 🤖 add test selectors to roles update tests
* refactor: 💡 small test clean up
* chore: 🤖 add test selectors to roles delete tests
There was an issue in tests where events fired in
Hds::FlyOut and Hds::Modal were not being dispatched.
These close events were depended on by test waiters
to know when the element was removed. In recent
versions of chrome, when ran headless and on macos,
these events were not firing. This meant the tests
waited indefinitely on developers local machines,
until the tests timed out. This issue was seen
across multiple macbooks and even on the hds repo.
This issue was *only* experienced in headless
chrome on recent macos.
It was **not** happening in:
* macos chrome headed locally
* linux chrome headless in CI
This made the issue only impact people running tests
locally, getting obscure timeouts. This issue is fixed
by the addition of this flag:
--disable-backgrounding-occluded-windows
The other flags added in this commit are not required
for the fix but should help keep a browser "active",
which was loosely what researching this bug hinted at
the cause of finding the issue fix.
* chore: 🤖 update managed-groups read test selectors
* chore: 🤖 add test selectors to managed-groups delete
* chore: 🤖 use test selectors in managed-groups list tests
* chore: 🤖 refactor managed-groups members tests
* refactor: 💡 update selector name for DELETE action
* test(e2e): decouple url used for browser vs cli
* test(e2e): Add instructions for using the UI of a local branch
* CR
* Fix typo in e2e-tests/README.md
Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
---------
Co-authored-by: Dharini Jeeva <dharini@hashicorp.com>
* refactor: 💡 Read aliases test suite
Refactor tests for read aliases test suite
✅ Closes: ICU-15455
* replace with alert toast body, replace with this.server.schema
* revert change
* revert oidc test
* revert roles, create-test
* add const to commonSelectors file, revert selectors file
* rename selector
* use TABLE_RESOURCE_LINK common selector
* fix test failure
* docs: ✏️ update bug report template
* docs: ✏️ update debug log info
* docs: ✏️ small comment changes
* docs: ✏️ add arch and os version examples
* docs: ✏️ change App Version to Desktop Client Version
* docs: ✏️ small change
* docs: ✏️ another small change to bug template
This test attempted to delete a session recording when the policy did not allow it. However, there was a UI change to remove that option entirely, so we are removing the check.
* chore: 🤖 add .eslintignore for e2e-tests directory
* chore: 🤖 add auto-fixable eslint changes
* chore: 🤖 make js tasks more explicit to avoid race conditions
avoid having js files be in two separate concurrent branches where tasks
could result in race-condition writes
* chore: 🤖 expand .eslintignore to include more generated dirs
* chore: 🤖 fix additional lint-staged tasks
Fix additional lint-staged tasks that could result in race conditions
* replace with alert toast body, replace with this.server.schema
* revert changes to db,schema
* use common selector, alert toast body
* replace ERROR_MSG_SELECTOR with common selector ALERT_TOAST_BODY
* docs: ✏️ update e2e docs with supported enos scenarios
* Update grammatical typo in e2e-tests/README.md
Co-authored-by: Michael Li <michael.li@hashicorp.com>
---------
Co-authored-by: Michael Li <michael.li@hashicorp.com>
* trim whitespace on json attrs in storage bucket serializer
* add test for storage bucket serializer
* move trimWhitespace check to application level
* add trimWhitespace to preferred_endpoints attr
* add conditional for string arr
* trim whitespace on str arr
* add check for null val
* refactor, move logic
* relocate comment
* add unit test for application serializer
For questions, the best place to get answers is on our [discussion forum](https://discuss.hashicorp.com/c/boundary), as they will get more visibility from experienced users than the issue tracker.
For questions, the best place to get answers is on our [discussion forum](https://discuss.hashicorp.com/c/boundary), as they will get more visibility from experienced users than the issue tracker.
Please note: We take Boundary's security and our users' trust very seriously. If you believe you have found a security issue in Boundary, please responsibly disclose by contacting us at security@hashicorp.com. Our PGP key is available at [our security page](https://www.hashicorp.com/security/).
Please note: We take Boundary's security and our users' trust very seriously. If you believe you have found a security issue in Boundary, please responsibly disclose this by contacting us at security@hashicorp.com. Our PGP key is available on [our security page](https://www.hashicorp.com/security/).
Logging is available on Boundary Desktop Client version >= 2.1.0
@@ -25,7 +25,7 @@ subproject, e.g. running or testing.
- [Prerequisites](#prerequisites)
- [Prerequisites](#prerequisites)
- [Optional Tooling](#optional-tooling)
- [Optional Tooling](#optional-tooling)
- [Installation](#installation)
- [Installation](#installation)
- [Yarn Commands](#yarn-commands)
- [Pnpm Commands](#pnpm-commands)
- [Contributing](#contributing)
- [Contributing](#contributing)
- [Branching](#branching)
- [Branching](#branching)
- [Building ToC](#building-toc)
- [Building ToC](#building-toc)
@@ -33,8 +33,8 @@ subproject, e.g. running or testing.
- [Building with a Container](#building-with-a-container)
- [Building with a Container](#building-with-a-container)
- [Building Desktop UI for Production](#building-desktop-ui-for-production)
- [Building Desktop UI for Production](#building-desktop-ui-for-production)
- [Connect Boundary UI to Boundary local instance](#connect-boundary-ui-to-boundary-local-instance)
- [Connect Boundary UI to Boundary local instance](#connect-boundary-ui-to-boundary-local-instance)
- [For admin](#for-admin)
- [For Admin](#for-admin)
- [For desktop](#for-desktop)
- [For Desktop](#for-desktop)
- [Committing](#committing)
- [Committing](#committing)
- [License Checking](#license-checking)
- [License Checking](#license-checking)
@@ -67,8 +67,8 @@ You will need the following things properly installed on your computer.
* [Git][git]
* [Git][git]
* [Node.js][node]
* [Node.js][node]
* Supported versions: `v18` and `v20`.
* Supported versions: `v20` and `v22`.
* [Yarn][yarn] installed globally
* [Pnpm][pnpm] installed globally
* [Google Chrome][chrome]
* [Google Chrome][chrome]
* [Firefox][firefox]
* [Firefox][firefox]
@@ -90,18 +90,18 @@ that best suit you and your personal style.
*`git clone <repository-url>` this repository
*`git clone <repository-url>` this repository
*`cd boundary-ui`
*`cd boundary-ui`
*`yarn install`
*`pnpm install`
## Yarn Commands
## Pnpm Commands
List of available project commands. `yarn run <command-name>`
List of available project commands. `pnpm run <command-name>`
| Command | Description |
| Command | Description |
|---------------------|---|
|---------------------|---|
| build | Builds Admin UI for production. |
| build | Builds Admin UI for production. |
| test | Runs tests in CI mode. |
| test | Runs tests in CI mode. |
| lint | Runs ember-template-lint on all of the hbs, js, and sass files. |
| lint | Runs ember-template-lint on all of the hbs, js, and sass files. |
| compliance:audit | Checks for issues using `yarn audit` with moderate and above criticality.|
| compliance:audit | Checks for issues using `pnpm audit` with moderate and above criticality.|
| compliance:licenses | Checks that all dependencies have OSS-compatible licenses. |
| compliance:licenses | Checks that all dependencies have OSS-compatible licenses. |
| doc:toc | Automatically generates a table of contents for the README file. |
| doc:toc | Automatically generates a table of contents for the README file. |
@@ -114,7 +114,7 @@ We follow [GitHub Flow][github-flow].
### Building ToC
### Building ToC
To autogenerate a ToC (table of contents) for this README,
To autogenerate a ToC (table of contents) for this README,
run `yarn doc:toc`. Please update the ToC whenever editing the structure
run `pnpm doc:toc`. Please update the ToC whenever editing the structure
of README.
of README.
### Building Admin UI for Production
### Building Admin UI for Production
@@ -126,8 +126,8 @@ necessary for your target environment, as described in the [Environment Variable
To quickly produce a production build of Admin UI, run from this folder:
To quickly produce a production build of Admin UI, run from this folder:
```bash
```bash
yarn install
pnpm install
yarn build
pnpm build
```
```
Assets are saved to `ui/admin/dist/`.
Assets are saved to `ui/admin/dist/`.
@@ -151,20 +151,20 @@ necessary for your target environment, as described in the [Environment Variable
To quickly produce a production build of Desktop UI, run from this folder:
To quickly produce a production build of Desktop UI, run from this folder:
```bash
```bash
yarn install
pnpm install
yarn build:ui:desktop
pnpm build:ui:desktop
```
```
In windows, UI is generated using docker to provide a stable UI across platforms.
In windows, UI is generated using docker to provide a stable UI across platforms.
```cmd
```cmd
yarn install
pnpm install
docker-compose -f docker-compose-embedding.yml run build-desktop-production
docker-compose -f docker-compose-embedding.yml run build-desktop-production
yarn build:ui:desktop:app
pnpm build:ui:desktop:app
```
```
To provide a signing identify for macOS build, use `BOUNDARY_DESKTOP_SIGNING_IDENTITY`
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 `yarn build:ui:desktop:app`.
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/`.
Assets are saved to `ui/desktop/electron-app/out/make/`.
DMG packaged desktop UI is available at asset location as `boundary.dmg`.
DMG packaged desktop UI is available at asset location as `boundary.dmg`.
@@ -180,7 +180,7 @@ This assumes you already have up and running a Boundary dev instance in your loc
This assumes you are within `boundary-ui/ui/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 yarn start`.
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/`.
Following terminal instructions, open in your browser: `http://localhost:4200/`.
@@ -190,7 +190,7 @@ Once you open the UI you will see the login screen, authenticate using generated
This assumes you are within `boundary-ui/ui/desktop`.
This assumes you are within `boundary-ui/ui/desktop`.
You will need to turn `off` mirage and run it: `$ ENABLE_MIRAGE=false yarn start: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.
In login screen, authenticate using generated admin login name and password.
@@ -199,7 +199,7 @@ Enter the cluster URL of your Boundary dev instance, by default is: `http://loca
### Committing
### Committing
We use `husky` and `lint-staged` to ensure linting and other checks pass before a
We use `husky` and `lint-staged` to ensure linting and other checks pass before a
commit is completed. Simply do a `yarn install` to make sure the hooks are installed.
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 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
use `git commit --no-verify` to bypass them. However, a consistent commit message will
@@ -8,7 +8,7 @@ This addon contains the API data access layer for Boundary.
- [Add API to an App](#add-api-to-an-app)
- [Add API to an App](#add-api-to-an-app)
- [Installation](#installation)
- [Installation](#installation)
- [Yarn Commands](#yarn-commands)
- [Pnpm Commands](#pnpm-commands)
- [Linting](#linting)
- [Linting](#linting)
- [Formatting](#formatting)
- [Formatting](#formatting)
- [Running tests](#running-tests)
- [Running tests](#running-tests)
@@ -21,26 +21,59 @@ This addon contains the API data access layer for Boundary.
## Add API to an App
## Add API to an App
Add this addon to an Ember application's `devDependencies` as:
Add this addon to an Ember application's `devDependencies` as:
`"api": "*"`, for applications included in this monorepo.
`"api": "workspace:*"`, for applications included in this monorepo.
Since this addon also includes Mirage mocks, be sure to install
This addon also includes Mirage mocks. To include the `miragejs` dependency and this addon's mirage handlers configure the consuming app's `config/environment.js`
`ember-cli-mirage` and add the following config to your UI project:
```js
```js
'ember-cli-mirage':{
mirage:{
directory:'../../addons/api/mirage'
enabled:true
}
}
```
```
Include `miragejs` and any api addon `peerDependencies` used by the mirage as dev dependencies in the consuming app,
eg: `@faker-js/faker`, otherwise mirage handler code might fail with an error.
To have mirage start and intercept requests when the application starts:
1. Add the `@embroider/macros` dependency to your application
2. Configure `@embroider/macros` with `startMirageWithApp` based on app's config within `ember-cli-build.js`:
Loaded 100 of 2706 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.