| # Gemini Project Profile: gerrit/polygerrit-ui |
| |
| This document provides a summary of the front-end development environment for the `polygerrit-ui` part of the gerrit project. |
| |
| ## Overview |
| |
| - **Framework**: The project is built with Web Components, using Lit |
| - **Language**: TypeScript |
| - **Build Tool**: Bazel is the primary build tool for the overall project. |
| - **Testing**: |
| - **Runner**: `@web/test-runner` |
| - **Framework**: `mocha` |
| - **Assertions/Mocks**: `sinon`, `@open-wc/semantic-dom-diff` |
| - **Browser Testing**: `playwright` |
| - **Package Manager**: `yarn` |
| |
| ## Key Commands |
| |
| The following commands should be run from the project root directory. |
| |
| ### Checking for TypeScript Errors |
| |
| To check for TypeScript errors without running the full test suite, use the `compile` script: |
| |
| ```bash |
| yarn compile |
| ``` |
| |
| ### Running Tests |
| |
| - `yarn test`: Run all tests. |
| - `yarn test:screenshot`: Run visual regression tests. |
| |
| ## Running Single Tests |
| |
| Running the full test suite can be slow. For a faster feedback loop during development, you can run tests for a single file. Use the `test:single:nowatch` script with the path to the test file. This will run the test once and exit. |
| |
| **Command:** |
| |
| ```bash |
| yarn test:single:nowatch "**/test_file.ts" |
| ``` |
| |
| If you want to run the test in watch mode, you can use `test:single`. |
| |
| **Examples:** |
| |
| ```bash |
| yarn test:single:nowatch "**/gr-account-list_test.ts" |
| yarn test:single:nowatch "**/gr-user-suggestion_test.ts" |
| ``` |
| |
| ## UI Elements |
| |
| Here is a list of the UI elements found in `polygerrit-ui/app/elements` with a brief description of their purpose. |
| |
| - `gr-access-section`: Manages a section of the access rights page for a repository. |
| - `gr-admin-group-list`: Displays a list of user groups in the admin section. |
| - `gr-admin-view`: The main view for the admin section, containing navigation and sub-views. |
| - `gr-confirm-delete-item-dialog`: A confirmation dialog for deleting an item. |
| - `gr-create-change-dialog`: A dialog for creating a new change. |
| - `gr-create-file-edit-dialog`: A dialog for creating a new file edit. |
| - `gr-create-group-dialog`: A dialog for creating a new user group. |
| - `gr-create-pointer-dialog`: A dialog for creating a new branch or tag. |
| - `gr-create-repo-dialog`: A dialog for creating a new repository. |
| - `gr-group-audit-log`: Displays the audit log for a user group. |
| - `gr-group-members`: Manages the members of a user group. |
| - `gr-group`: Displays and manages the details of a user group. |
| - `gr-permission`: Manages a single permission within an access section. |
| - `gr-plugin-config-array-editor`: An editor for a plugin configuration option that is an array. |
| - `gr-plugin-list`: Displays a list of installed plugins. |
| - `gr-repo-access`: Manages the access rights for a repository. |
| - `gr-repo-commands`: Displays repository-related commands. |
| - `gr-repo-dashboards`: Manages the dashboards for a repository. |
| - `gr-repo-detail-list`: Displays a list of branches or tags for a repository. |
| - `gr-repo-list`: Displays a list of repositories. |
| - `gr-repo-plugin-config`: Manages the plugin configuration for a repository. |
| - `gr-repo-submit-requirements`: Manages the submit requirements for a repository. |
| - `gr-repo`: Displays and manages the details of a repository. |
| - `gr-rule-editor`: An editor for a single access rule. |
| - `gr-server-info`: Displays information about the Gerrit server. |
| - `gr-change-list-action-bar`: An action bar for the top of a change list section. |
| - `gr-change-list-bulk-abandon-flow`: A flow for abandoning multiple changes in bulk. |
| - `gr-change-list-bulk-vote-flow`: A flow for voting on multiple changes in bulk. |
| - `gr-change-list-column-requirement`: Displays a single submit requirement in a change list column. |
| - `gr-change-list-column-requirements-summary`: Displays a summary of submit requirements in a change list column. |
| - `gr-change-list-copy-link-flow`: A flow for copying links to multiple changes. |
| - `gr-change-list-hashtag-flow`: A flow for adding hashtags to multiple changes. |
| - `gr-change-list-item`: A single item in a change list. |
| - `gr-change-list-reviewer-flow`: A flow for adding reviewers to multiple changes. |
| - `gr-change-list-section`: A section of a change list. |
| - `gr-change-list-topic-flow`: A flow for setting the topic of multiple changes. |
| - `gr-change-list-view`: The main view for a list of changes. |
| - `gr-change-list`: A list of changes. |
| - `gr-create-change-help`: A help dialog for creating a new change. |
| - `gr-create-commands-dialog`: A dialog that displays the commands for creating a new change. |
| - `gr-create-destination-dialog`: A dialog for selecting the destination for a new change. |
| - `gr-dashboard-view`: The main view for a user's dashboard. |
| - `gr-repo-header`: The header for a repository page. |
| - `gr-user-header`: The header for a user's page. |
| - `gr-ai-prompt-dialog`: A dialog for generating AI prompts. |
| - `gr-change-actions`: The action bar for a single change. |
| - `gr-change-metadata`: The metadata section for a single change. |
| - `gr-change-summary`: A summary of a single change. |
| - `gr-checks-chip`: A chip for displaying the status of a check. |
| - `gr-summary-chip`: A chip for displaying a summary of information. |
| - `gr-change-view`: The main view for a single change. |
| - `gr-comments-summary`: A summary of the comments on a change. |
| - `gr-commit-info`: Displays information about a single commit. |
| - `gr-confirm-abandon-dialog`: A confirmation dialog for abandoning a change. |
| - `gr-confirm-cherrypick-conflict-dialog`: A confirmation dialog for a cherry-pick conflict. |
| - `gr-confirm-cherrypick-dialog`: A confirmation dialog for cherry-picking a change. |
| - `gr-confirm-move-dialog`: A confirmation dialog for moving a change. |
| - `gr-confirm-rebase-dialog`: A confirmation dialog for rebasing a change. |
| - `gr-confirm-revert-dialog`: A confirmation dialog for reverting a change. |
| - `gr-confirm-submit-dialog`: A confirmation dialog for submitting a change. |
| - `gr-copy-links`: A dialog for copying links related to a change. |
| - `gr-download-dialog`: A dialog for downloading a patch set. |
| - `gr-file-list-header`: The header for a file list. |
| - `gr-file-list`: A list of files in a patch set. |
| - `gr-included-in-dialog`: A dialog that displays where a change is included. |
| - `gr-label-score-row`: A row in the label scores table. |
| - `gr-label-scores`: A table of label scores. |
| - `gr-message-scores`: Displays the scores from a change message. |
| - `gr-message`: A single message in a change's history. |
| - `gr-messages-list`: A list of messages in a change's history. |
| - `gr-related-change`: A single related change. |
| - `gr-related-changes-list`: A list of related changes. |
| - `gr-related-collapse`: A collapsible section of related changes. |
| - `gr-reply-dialog`: The reply dialog for a change. |
| - `gr-reviewer-list`: A list of reviewers on a change. |
| - `gr-revision-parents`: Displays the parents of a revision. |
| - `gr-submit-requirement-dashboard-hovercard`: A hovercard for a submit requirement on the dashboard. |
| - `gr-submit-requirement-hovercard`: A hovercard for a submit requirement. |
| - `gr-submit-requirements`: A list of submit requirements. |
| - `gr-thread-list`: A list of comment threads. |
| - `gr-trigger-vote-hovercard`: A hovercard for a trigger vote. |
| - `gr-trigger-vote`: A trigger vote chip. |
| - `gr-validation-options`: Options for validation. |
| - `gr-checks-action`: An action for a check. |
| - `gr-checks-attempt`: An attempt for a check. |
| - `gr-checks-chip-for-label`: A chip for a check on a label. |
| - `gr-checks-fix-preview`: A preview of a fix for a check. |
| - `gr-checks-results`: The results of a check. |
| - `gr-checks-runs`: The runs of a check. |
| - `gr-checks-tab`: The checks tab. |
| - `gr-diff-check-result`: The result of a diff check. |
| - `gr-hovercard-run`: A hovercard for a check run. |
| - `gr-account-dropdown`: A dropdown for the user's account. |
| - `gr-error-dialog`: A dialog for displaying an error. |
| - `gr-error-manager`: Manages errors. |
| - `gr-key-binding-display`: Displays a key binding. |
| - `gr-keyboard-shortcuts-dialog`: A dialog for displaying keyboard shortcuts. |
| - `gr-main-header`: The main header of the application. |
| - `gr-navigation`: Manages navigation. |
| - `gr-notifications-prompt`: A prompt for notifications. |
| - `gr-router`: The main router for the application. |
| - `gr-search-bar`: The search bar. |
| - `gr-smart-search`: A search bar with smart suggestions. |
| - `gr-apply-fix-dialog`: A dialog for applying a fix. |
| - `gr-comment-api`: The API for comments. |
| - `gr-diff-host`: The host for a diff. |
| - `gr-diff-mode-selector`: A selector for the diff mode. |
| - `gr-diff-preferences-dialog`: A dialog for diff preferences. |
| - `gr-diff-view`: The main view for a diff. |
| - `gr-patch-range-select`: A selector for the patch range. |
| - `gr-documentation-search`: A search bar for documentation. |
| - `gr-default-editor`: The default editor. |
| - `gr-edit-controls`: Controls for editing. |
| - `gr-edit-file-controls`: Controls for editing a file. |
| - `gr-edit-preferences-dialog`: A dialog for edit preferences. |
| - `gr-editor-view`: The main view for an editor. |
| - `gr-app-element`: The main application element. |
| - `gr-app`: The main application component. |
| - `gr-css-mixins`: CSS mixins. |
| - `fit-controller`: A controller for fitting an element. |
| - `incremental-repeat`: A directive for incrementally repeating an element. |
| - `shortcut-controller`: A controller for shortcuts. |
| - `subscription-controller`: A controller for subscriptions. |
| - `gr-admin-api`: The API for admin functions. |
| - `gr-attribute-helper`: A helper for attributes. |
| - `gr-change-updates-api`: The API for change updates. |
| - `gr-checks-api`: The API for checks. |
| - `gr-dom-hooks`: Hooks for the DOM. |
| - `gr-endpoint-decorator`: A decorator for endpoints. |
| - `gr-endpoint-param`: A parameter for an endpoint. |
| - `gr-endpoint-slot`: A slot for an endpoint. |
| - `gr-event-helper`: A helper for events. |
| - `gr-plugin-host`: The host for a plugin. |
| - `gr-plugin-screen`: The screen for a plugin. |
| - `gr-plugin-popup`: A popup for a plugin. |
| - `gr-popup-interface`: The interface for a popup. |
| - `gr-suggestions-api`: The API for suggestions. |
| - `gr-account-info`: Displays information about an account. |
| - `gr-agreements-list`: A list of agreements. |
| - `gr-change-table-editor`: An editor for the change table. |
| - `gr-cla-view`: The view for a CLA. |
| - `gr-edit-preferences`: Preferences for editing. |
| - `gr-email-editor`: An editor for emails. |
| - `gr-gpg-editor`: An editor for GPG keys. |
| - `gr-group-list`: A list of groups. |
| - `gr-http-password`: A password for HTTP. |
| - `gr-identities`: A list of identities. |
| - `gr-menu-editor`: An editor for the menu. |
| - `gr-preferences`: Preferences. |
| - `gr-registration-dialog`: A dialog for registration. |
| - `gr-settings-view`: The main view for settings. |
| - `gr-ssh-editor`: An editor for SSH keys. |
| - `gr-watched-projects-editor`: An editor for watched projects. |
| - `gr-account-chip`: A chip for an account. |
| - `gr-account-entry`: An entry for an account. |
| - `gr-account-label`: A label for an account. |
| - `gr-account-list`: A list of accounts. |
| - `gr-alert`: An alert. |
| - `gr-autocomplete-dropdown`: A dropdown for an autocomplete. |
| - `gr-autocomplete`: An autocomplete. |
| - `gr-avatar`: An avatar. |
| - `gr-avatar-stack`: A stack of avatars. |
| - `gr-button`: A button. |
| - `gr-change-star`: A star for a change. |
| - `gr-change-status`: The status of a change. |
| - `gr-comment-model`: The model for a comment. |
| - `gr-comment-thread`: A thread of comments. |
| - `gr-comment`: A single comment. |
| - `gr-confirm-delete-comment-dialog`: A confirmation dialog for deleting a comment. |
| - `gr-copy-clipboard`: A button for copying to the clipboard. |
| - `gr-cursor-manager`: Manages the cursor. |
| - `gr-date-formatter`: Formats a date. |
| - `gr-dialog`: A dialog. |
| - `gr-diff-preferences`: Preferences for a diff. |
| - `gr-download-commands`: Commands for downloading. |
| - `gr-dropdown-list`: A list for a dropdown. |
| - `gr-dropdown`: A dropdown. |
| - `gr-editable-content`: Editable content. |
| - `gr-editable-label`: An editable label. |
| - `gr-file-status`: The status of a file. |
| - `gr-fix-suggestions`: Suggestions for a fix. |
| - `gr-formatted-text`: Formatted text. |
| - `gr-hovercard-account`: A hovercard for an account. |
| - `gr-hovercard`: A hovercard. |
| - `gr-icon`: An icon. |
| - `gr-js-api-interface`: The interface for the JS API. |
| - `gr-label-info`: Information about a label. |
| - `gr-labeled-autocomplete`: An autocomplete with a label. |
| - `gr-lib-loader`: Loads a library. |
| - `gr-limited-text`: Text with a limited length. |
| - `gr-linked-chip`: A chip with a link. |
| - `gr-list-view`: A view for a list. |
| - `gr-marked-element`: An element for markdown. |
| - `gr-page-nav`: Navigation for a page. |
| - `gr-repo-branch-picker`: A picker for a repo and branch. |
| - `gr-rest-api-interface`: The interface for the REST API. |
| - `gr-select`: A select. |
| - `gr-selector`: A selector. |
| - `gr-shell-command`: A shell command. |
| - `gr-suggestion-diff-preview`: A preview of a suggestion diff. |
| - `gr-suggestion-textarea`: A textarea with suggestions. |
| - `gr-tooltip-content`: Content for a tooltip. |
| - `gr-tooltip`: A tooltip. |
| - `gr-user-suggestion-fix`: A fix for a user suggestion. |
| - `gr-vote-chip`: A chip for a vote. |
| - `gr-weblink`: A weblink. |
| - `revision-info`: Information about a revision. |