* 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
* refactor: 💡 add worker filter back to create form
✅ Closes: ICU-16281
* add helper text to worker filter generator at creation state
* set isOptional to true
* set isOptional to true
---------
Co-authored-by: cameronperera <cameron.perera@hashicorp.com>
* test(e2e): Update "Inactive" locators
* test(e2e): Update worker filter locators
* test(e2e): Address flake
Ensure that the test has reached the org page before trying to click the Auth Methods link (there is an auth method link on both the global page and the org page).
* test(e2e): add e2e test for scope chooser with filtered targets
Closes: https://hashicorp.atlassian.net/browse/ICU-16121
* Add missing copyright headers
* chore(e2e): use prettier on scope.spec.js
* refactor(e2e): use explicit checks for scope in summary
* refactor(e2e): move test hooks and associated variables to top-level
Move beforeEach and afterEach and the associated variables setup in
hooks to top-level within scope.spec.js. This matches the patterns
used in other tests.
* refactor(e2e): use simpler scoped locator for summary element within header-nav
---------
Co-authored-by: hashicc <hashicc@users.noreply.github.com>
* test(e2e): Address deprecation
* test(e2e): Add additional connection assertions on tests
* CR: Fix flake when waiting for sessions
If no sessions are available and the page needs to reload, we should wait to ensure that the page has loaded before checking what the state of the sessions are
* CR: Address flake in connect methods
Noticed an issue where a session recording was not playable. The theory is that the session didn't last long enough before it was cancelled. This adds a 2 second wait after establishing a connection before continuing.
* CR: Use authenticated state by default
* CR: Update dynamic host catalog assertion
* CR: Simplify host set checks
- Use .all() when looping
- Add check to see if we need to reload the page or not
* CR: Be more specific with locator
Ran into a conflict with the Static/Dynamic host catalog type and the Static/Dynamic credential type.
* CR: Update connection methods to be more resilient
Rather than using a hardcoded sleep, we will now run a command on the target and wait for a specific string to return before continuing.
* CR
* test: 💍 test 1
* chore: 🤖 remove waitForPromise use
* chore: 🤖 remove all other waitforpromise usage
* test: 💍 turn down polling
* test: 💍 use .json
* refactor: 💡 add waitForPromise back in & consume response body
* test: 💍 some testing
* test: 💍 more testing
* refactor: 💡 clean-up a bit
* refactor: 💡 use head method request & clean up comments
* refactor: 💡 use get method & consume response body
* test: 💍 fix token validation test cases
* refactor: 💡 Replace rose::separator comp with hds::separator
This PR replaces the rose::separator with the hds::separator and removes
an integration test that is no longer needed
✅ Closes: ICU-15646
* retire rose::separator and remove styling
* remove separator import
* remove separator.js
* refactor: 💡 Move global setup to root
* refactor: 💡 Move env variable test fixture to global setup file
* test: 💍 Add more DC e2e tests for targets
* docs: ✏️ Updated e2e README
✅ Closes: https://hashicorp.atlassian.net/browse/ICU-14777
* refactor: 💡 Move e2e tests to new folder
* refactor: 💡 Convert desktop tests to mjs and use es6 imports
* refactor: 💡 Use module setting for e2e directory and remove mjs
* refactor: 💡 Remove "e2e" in all scripts in package.json
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)
- [Optional Tooling](#optional-tooling)
- [Installation](#installation)
- [Yarn Commands](#yarn-commands)
- [Pnpm Commands](#pnpm-commands)
- [Contributing](#contributing)
- [Branching](#branching)
- [Building ToC](#building-toc)
@@ -33,8 +33,8 @@ subproject, e.g. running or testing.
- [Building with a Container](#building-with-a-container)
- [Building Desktop UI for Production](#building-desktop-ui-for-production)
- [Connect Boundary UI to Boundary local instance](#connect-boundary-ui-to-boundary-local-instance)
- [For admin](#for-admin)
- [For desktop](#for-desktop)
- [For Admin](#for-admin)
- [For Desktop](#for-desktop)
- [Committing](#committing)
- [License Checking](#license-checking)
@@ -67,8 +67,8 @@ You will need the following things properly installed on your computer.
* [Git][git]
* [Node.js][node]
* Supported versions: `v18` and `v20`.
* [Yarn][yarn] installed globally
* Supported versions: `v20` and `v22`.
* [Pnpm][pnpm] installed globally
* [Google Chrome][chrome]
* [Firefox][firefox]
@@ -90,18 +90,18 @@ that best suit you and your personal style.
*`git clone <repository-url>` this repository
*`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 |
|---------------------|---|
| 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 `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. |
| doc:toc | Automatically generates a table of contents for the README file. |
@@ -114,7 +114,7 @@ We follow [GitHub Flow][github-flow].
### Building ToC
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.
### 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:
```bash
yarn install
yarn build
pnpm install
pnpm build
```
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:
```bash
yarn install
yarn build:ui:desktop
pnpm install
pnpm build:ui:desktop
```
In windows, UI is generated using docker to provide a stable UI across platforms.
```cmd
yarn install
pnpm install
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`
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/`.
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`.
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/`.
@@ -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`.
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.
@@ -199,7 +199,7 @@ Enter the cluster URL of your Boundary dev instance, by default is: `http://loca
### Committing
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 `git commit --no-verify` to bypass them. However, a consistent commit message will
description:'The project ID associated with the service account.',
})
project_id;
@attr('string',{
for:{
type:'plugin',
name:'gcp',
},
isNestedAttribute:true,
description:'The deployment area within a region.',
})
zone;
@attr('string',{
for:{
type:'plugin',
name:'gcp',
},
isNestedAttribute:true,
description:
'The email address associated with the service account. The email address used to uniquely identify the service account. It is required for authentication and authorization.',
})
client_email;
@attr('string',{
for:{
type:'plugin',
name:'gcp',
},
isNestedAttribute:true,
description:
'The unique identifier for the service account that will be impersonated.',
})
target_service_account_id;
@attr('string',{
for:{
type:'plugin',
name:'gcp',
},
description:
'The ID of the private key used to sign the JWT and authentication.',
isNestedSecret:true,
})
private_key_id;
@attr('string',{
for:{
type:'plugin',
name:'gcp',
},
description:
'The private key used to sign the JWT and obtain a OAuth 2.0 access token.',
"The number of seconds between the time boundary syncs the hosts in this set using this host set's plugin. If not provided a system determined default is used",
// These fields are AWS specific, AWS provider now has two credentialTypes: static and dynamic [not to be confused with static and dynamic host-catalogs]
// Remove attributes that are not applicable to the current credential type for the same plugin
// For example, 'aws' dynamic plugin has two credential types: 'static' and 'dynamic'
// API expects the fields to be 'null' for the fields that are not from the current credential type (that's why we are not using the application serializer for this, where we delete attrs)
`The attribute "${attribute}" does not map to the model definition of type "${record.type}". Supported sortable attributes are 'id', 'created_time', or ${attributes.map((attr)=>`'${attr}'`).join(', ')}`,
Loaded 100 of 1374 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.