Merge pull request #9637 from mabashian/ouiaids

Adds ouiaId's to various buttons

SUMMARY
@tiagodread @unlikelyzero @one-t @akus062381 this will likely break something because I changed some existing ouia-id's so that they are a consistent structure.
^^ Let's let one of them merge this
I also removed an unused component

Reviewed-by: Jake McDermott <yo@jakemcdermott.me>
Reviewed-by: John Hill <johill@redhat.com>
This commit is contained in:
softwarefactory-project-zuul[bot]
2021-03-21 19:55:56 +00:00
committed by GitHub
109 changed files with 219 additions and 163 deletions

View File

@@ -128,6 +128,7 @@ function AdHocCommands({ adHocItems, i18n, hasListItems }) {
</DropdownItem> </DropdownItem>
) : ( ) : (
<Button <Button
ouiaId="run-command-button"
variant="secondary" variant="secondary"
aria-label={i18n._(t`Run Command`)} aria-label={i18n._(t`Run Command`)}
onClick={() => setIsWizardOpen(true)} onClick={() => setIsWizardOpen(true)}

View File

@@ -101,6 +101,7 @@ function AssociateModal({
onClose={handleClose} onClose={handleClose}
actions={[ actions={[
<Button <Button
ouiaId="associate-modal-save"
aria-label={i18n._(t`Save`)} aria-label={i18n._(t`Save`)}
key="select" key="select"
variant="primary" variant="primary"
@@ -110,6 +111,7 @@ function AssociateModal({
{i18n._(t`Save`)} {i18n._(t`Save`)}
</Button>, </Button>,
<Button <Button
ouiaId="associate-modal-cancel"
aria-label={i18n._(t`Cancel`)} aria-label={i18n._(t`Cancel`)}
key="cancel" key="cancel"
variant="link" variant="link"

View File

@@ -46,6 +46,7 @@ class ClipboardCopyButton extends React.Component {
exitDelay, exitDelay,
copiedSuccessTip, copiedSuccessTip,
isDisabled, isDisabled,
ouiaId,
} = this.props; } = this.props;
const { copied } = this.state; const { copied } = this.state;
@@ -57,6 +58,7 @@ class ClipboardCopyButton extends React.Component {
content={copied ? copiedSuccessTip : copyTip} content={copied ? copiedSuccessTip : copyTip}
> >
<Button <Button
ouiaId={ouiaId}
isDisabled={isDisabled} isDisabled={isDisabled}
variant="plain" variant="plain"
onClick={this.handleCopyClick} onClick={this.handleCopyClick}

View File

@@ -1,58 +0,0 @@
import React, { useState } from 'react';
import { bool, string } from 'prop-types';
import styled from 'styled-components';
import { Button } from '@patternfly/react-core';
import { AngleRightIcon } from '@patternfly/react-icons';
import omitProps from '../../util/omitProps';
import ExpandingContainer from './ExpandingContainer';
// Make button findable by tests
Button.displayName = 'Button';
const Toggle = styled.div`
display: flex;
hr {
margin-left: 20px;
flex: 1 1 auto;
align-self: center;
border: 0;
border-bottom: 1px solid var(--pf-global--BorderColor--300);
}
`;
const Arrow = styled(omitProps(AngleRightIcon, 'isExpanded'))`
margin-right: -5px;
margin-left: 5px;
transition: transform 0.1s ease-out;
transform-origin: 50% 50%;
${props => props.isExpanded && `transform: rotate(90deg);`}
`;
function CollapsibleSection({ label, startExpanded, children }) {
const [isExpanded, setIsExpanded] = useState(startExpanded);
const toggle = () => setIsExpanded(!isExpanded);
return (
<div>
<Toggle>
<Button onClick={toggle}>
{label} <Arrow isExpanded={isExpanded} />
</Button>
<hr />
</Toggle>
<ExpandingContainer isExpanded={isExpanded}>
{children}
</ExpandingContainer>
</div>
);
}
CollapsibleSection.propTypes = {
label: string.isRequired,
startExpanded: bool,
};
CollapsibleSection.defaultProps = {
startExpanded: false,
};
export default CollapsibleSection;

View File

@@ -1,26 +0,0 @@
import React from 'react';
import { shallow } from 'enzyme';
import CollapsibleSection from './CollapsibleSection';
describe('<CollapsibleSection>', () => {
it('should render contents', () => {
const wrapper = shallow(
<CollapsibleSection label="Advanced">foo</CollapsibleSection>
);
expect(wrapper.find('Button > *').prop('isExpanded')).toEqual(false);
expect(wrapper.find('ExpandingContainer').prop('isExpanded')).toEqual(
false
);
expect(wrapper.find('ExpandingContainer').prop('children')).toEqual('foo');
});
it('should toggle when clicked', () => {
const wrapper = shallow(
<CollapsibleSection label="Advanced">foo</CollapsibleSection>
);
expect(wrapper.find('Button > *').prop('isExpanded')).toEqual(false);
wrapper.find('Button').simulate('click');
expect(wrapper.find('Button > *').prop('isExpanded')).toEqual(true);
expect(wrapper.find('ExpandingContainer').prop('isExpanded')).toEqual(true);
});
});

View File

@@ -1,44 +0,0 @@
import 'styled-components/macro';
import React, { useState, useEffect, useRef } from 'react';
import { bool } from 'prop-types';
import styled from 'styled-components';
const Container = styled.div`
margin: 15px 0;
transition: height 0.2s ease-out;
${props => props.hideOverflow && `overflow: hidden;`}
`;
function ExpandingContainer({ isExpanded, children }) {
const [contentHeight, setContentHeight] = useState(0);
const [hideOverflow, setHideOverflow] = useState(!isExpanded);
const ref = useRef(null);
useEffect(() => {
ref.current.addEventListener('transitionend', () => {
setHideOverflow(!isExpanded);
});
});
useEffect(() => {
setContentHeight(ref.current.scrollHeight);
}, [setContentHeight, children]);
const height = isExpanded ? contentHeight : '0';
return (
<Container
ref={ref}
css={`
height: ${height}px;
`}
hideOverflow={!isExpanded || hideOverflow}
>
{children}
</Container>
);
}
ExpandingContainer.propTypes = {
isExpanded: bool,
};
ExpandingContainer.defaultProps = {
isExpanded: false,
};
export default ExpandingContainer;

View File

@@ -1 +0,0 @@
export { default } from './CollapsibleSection';

View File

@@ -35,6 +35,7 @@ function DeleteButton({
onClose={() => setIsOpen(false)} onClose={() => setIsOpen(false)}
actions={[ actions={[
<Button <Button
ouiaId="delete-modal-confirm"
key="delete" key="delete"
variant="danger" variant="danger"
aria-label={i18n._(t`Delete`)} aria-label={i18n._(t`Delete`)}
@@ -44,6 +45,7 @@ function DeleteButton({
{i18n._(t`Delete`)} {i18n._(t`Delete`)}
</Button>, </Button>,
<Button <Button
ouiaId="delete-modal-cancel"
key="cancel" key="cancel"
variant="link" variant="link"
aria-label={i18n._(t`Cancel`)} aria-label={i18n._(t`Cancel`)}

View File

@@ -90,6 +90,7 @@ function DisassociateButton({
<Tooltip content={renderTooltip()} position="top"> <Tooltip content={renderTooltip()} position="top">
<div> <div>
<Button <Button
ouiaId="disassociate-button"
variant="secondary" variant="secondary"
aria-label={i18n._(t`Disassociate`)} aria-label={i18n._(t`Disassociate`)}
onClick={() => setIsOpen(true)} onClick={() => setIsOpen(true)}
@@ -109,6 +110,7 @@ function DisassociateButton({
onClose={() => setIsOpen(false)} onClose={() => setIsOpen(false)}
actions={[ actions={[
<Button <Button
ouiaId="disassociate-modal-confirm"
key="disassociate" key="disassociate"
variant="danger" variant="danger"
aria-label={i18n._(t`confirm disassociate`)} aria-label={i18n._(t`confirm disassociate`)}
@@ -117,6 +119,7 @@ function DisassociateButton({
{i18n._(t`Disassociate`)} {i18n._(t`Disassociate`)}
</Button>, </Button>,
<Button <Button
ouiaId="disassociate-modal-cancel"
key="cancel" key="cancel"
variant="link" variant="link"
aria-label={i18n._(t`Cancel`)} aria-label={i18n._(t`Cancel`)}

View File

@@ -36,6 +36,7 @@ function ExpandCollapse({ isCompact, onCompact, onExpand, i18n }) {
<Fragment> <Fragment>
<ToolbarItem> <ToolbarItem>
<Button <Button
ouiaId="toolbar-collapse-button"
variant="plain" variant="plain"
aria-label={i18n._(t`Collapse`)} aria-label={i18n._(t`Collapse`)}
onClick={onCompact} onClick={onCompact}
@@ -46,6 +47,7 @@ function ExpandCollapse({ isCompact, onCompact, onExpand, i18n }) {
</ToolbarItem> </ToolbarItem>
<ToolbarItem> <ToolbarItem>
<Button <Button
ouiaId="toolbar-expand-button"
variant="plain" variant="plain"
aria-label={i18n._(t`Expand`)} aria-label={i18n._(t`Expand`)}
onClick={onExpand} onClick={onExpand}

View File

@@ -10,7 +10,7 @@ const FormActionGroup = ({ onCancel, onSubmit, submitDisabled, i18n }) => {
<FormFullWidthLayout> <FormFullWidthLayout>
<ActionGroup> <ActionGroup>
<Button <Button
ouiaId="Save" ouiaId="form-save-button"
aria-label={i18n._(t`Save`)} aria-label={i18n._(t`Save`)}
variant="primary" variant="primary"
type="button" type="button"
@@ -20,7 +20,7 @@ const FormActionGroup = ({ onCancel, onSubmit, submitDisabled, i18n }) => {
{i18n._(t`Save`)} {i18n._(t`Save`)}
</Button> </Button>
<Button <Button
ouiaId="Cancel" ouiaId="form-cancel-button"
aria-label={i18n._(t`Cancel`)} aria-label={i18n._(t`Cancel`)}
variant="link" variant="link"
type="button" type="button"

View File

@@ -36,6 +36,7 @@ function PasswordInput(props) {
content={inputType === 'password' ? i18n._(t`Show`) : i18n._(t`Hide`)} content={inputType === 'password' ? i18n._(t`Show`) : i18n._(t`Hide`)}
> >
<Button <Button
ouiaId={`${id}-toggle`}
variant={ButtonVariant.control} variant={ButtonVariant.control}
aria-label={i18n._(t`Toggle Password`)} aria-label={i18n._(t`Toggle Password`)}
onClick={handlePasswordToggle} onClick={handlePasswordToggle}

View File

@@ -115,6 +115,7 @@ function JobListCancelButton({ i18n, jobsToCancel, onCancel }) {
<Tooltip content={renderTooltip()} position="top"> <Tooltip content={renderTooltip()} position="top">
<div> <div>
<Button <Button
ouiaId="cancel-job-button"
variant="secondary" variant="secondary"
aria-label={cancelJobText} aria-label={cancelJobText}
onClick={toggleModal} onClick={toggleModal}
@@ -133,6 +134,7 @@ function JobListCancelButton({ i18n, jobsToCancel, onCancel }) {
onClose={toggleModal} onClose={toggleModal}
actions={[ actions={[
<Button <Button
ouiaId="cancel-job-confirm-button"
id="cancel-job-confirm-button" id="cancel-job-confirm-button"
key="delete" key="delete"
variant="danger" variant="danger"
@@ -142,6 +144,7 @@ function JobListCancelButton({ i18n, jobsToCancel, onCancel }) {
{cancelJobText} {cancelJobText}
</Button>, </Button>,
<Button <Button
ouiaId="cancel-job-return-button"
id="cancel-job-return-button" id="cancel-job-return-button"
key="cancel" key="cancel"
variant="secondary" variant="secondary"

View File

@@ -99,6 +99,7 @@ function JobListItem({
<LaunchButton resource={job}> <LaunchButton resource={job}>
{({ handleRelaunch }) => ( {({ handleRelaunch }) => (
<Button <Button
ouiaId={`${job.id}-relaunch-button`}
variant="plain" variant="plain"
onClick={handleRelaunch} onClick={handleRelaunch}
aria-label={i18n._(t`Relaunch`)} aria-label={i18n._(t`Relaunch`)}

View File

@@ -54,6 +54,7 @@ function ReLaunchDropDown({ isPrimary = false, handleRelaunch, i18n, ouiaId }) {
if (isPrimary) { if (isPrimary) {
return ( return (
<Dropdown <Dropdown
ouiaId={ouiaId}
position={DropdownPosition.left} position={DropdownPosition.left}
direction={DropdownDirection.up} direction={DropdownDirection.up}
isOpen={isOpen} isOpen={isOpen}

View File

@@ -247,6 +247,7 @@ function HostFilterLookup({
const renderLookup = () => ( const renderLookup = () => (
<InputGroup onBlur={onBlur}> <InputGroup onBlur={onBlur}>
<Button <Button
ouiaId="host-filter-search-button"
aria-label={i18n._(t`Search`)} aria-label={i18n._(t`Search`)}
id="host-filter" id="host-filter"
isDisabled={isDisabled} isDisabled={isDisabled}
@@ -311,6 +312,7 @@ function HostFilterLookup({
variant="large" variant="large"
actions={[ actions={[
<Button <Button
ouiaId="host-filter-modal-select-button"
isDisabled={!location.search} isDisabled={!location.search}
key="select" key="select"
onClick={save} onClick={save}
@@ -318,7 +320,12 @@ function HostFilterLookup({
> >
{i18n._(t`Select`)} {i18n._(t`Select`)}
</Button>, </Button>,
<Button key="cancel" variant="link" onClick={handleClose}> <Button
ouiaId="host-filter-modal-cancel-button"
key="cancel"
variant="link"
onClick={handleClose}
>
{i18n._(t`Cancel`)} {i18n._(t`Cancel`)}
</Button>, </Button>,
]} ]}

View File

@@ -29,6 +29,7 @@ function DeleteRoleConfirmationModal({
onClose={onCancel} onClose={onCancel}
actions={[ actions={[
<Button <Button
ouiaId="delete-role-modal-delete-button"
key="delete" key="delete"
variant="danger" variant="danger"
aria-label={i18n._(t`Confirm delete`)} aria-label={i18n._(t`Confirm delete`)}
@@ -36,7 +37,12 @@ function DeleteRoleConfirmationModal({
> >
{i18n._(t`Delete`)} {i18n._(t`Delete`)}
</Button>, </Button>,
<Button key="cancel" variant="link" onClick={onCancel}> <Button
ouiaId="delete-role-modal-cancel-button"
key="cancel"
variant="link"
onClick={onCancel}
>
{i18n._(t`Cancel`)} {i18n._(t`Cancel`)}
</Button>, </Button>,
]} ]}

View File

@@ -23,12 +23,14 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
<Button <Button
aria-label="Confirm delete" aria-label="Confirm delete"
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-delete-button"
variant="danger" variant="danger"
> >
Delete Delete
</Button>, </Button>,
<Button <Button
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-cancel-button"
variant="link" variant="link"
> >
Cancel Cancel
@@ -50,12 +52,14 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
<Button <Button
aria-label="Confirm delete" aria-label="Confirm delete"
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-delete-button"
variant="danger" variant="danger"
> >
Delete Delete
</Button>, </Button>,
<Button <Button
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-cancel-button"
variant="link" variant="link"
> >
Cancel Cancel
@@ -74,12 +78,14 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
<Button <Button
aria-label="Confirm delete" aria-label="Confirm delete"
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-delete-button"
variant="danger" variant="danger"
> >
Delete Delete
</Button>, </Button>,
<Button <Button
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-cancel-button"
variant="link" variant="link"
> >
Cancel Cancel
@@ -203,7 +209,7 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
aria-disabled="false" aria-disabled="false"
aria-label="Confirm delete" aria-label="Confirm delete"
class="pf-c-button pf-m-danger" class="pf-c-button pf-m-danger"
data-ouia-component-id="OUIA-Generated-Button-danger-1" data-ouia-component-id="delete-role-modal-delete-button"
data-ouia-component-type="PF4/Button" data-ouia-component-type="PF4/Button"
data-ouia-safe="true" data-ouia-safe="true"
type="button" type="button"
@@ -213,7 +219,7 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
<button <button
aria-disabled="false" aria-disabled="false"
class="pf-c-button pf-m-link" class="pf-c-button pf-m-link"
data-ouia-component-id="OUIA-Generated-Button-link-1" data-ouia-component-id="delete-role-modal-cancel-button"
data-ouia-component-type="PF4/Button" data-ouia-component-type="PF4/Button"
data-ouia-safe="true" data-ouia-safe="true"
type="button" type="button"
@@ -233,12 +239,14 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
<Button <Button
aria-label="Confirm delete" aria-label="Confirm delete"
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-delete-button"
variant="danger" variant="danger"
> >
Delete Delete
</Button>, </Button>,
<Button <Button
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-cancel-button"
variant="link" variant="link"
> >
Cancel Cancel
@@ -498,13 +506,14 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
aria-label="Confirm delete" aria-label="Confirm delete"
key="delete" key="delete"
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-delete-button"
variant="danger" variant="danger"
> >
<button <button
aria-disabled={false} aria-disabled={false}
aria-label="Confirm delete" aria-label="Confirm delete"
className="pf-c-button pf-m-danger" className="pf-c-button pf-m-danger"
data-ouia-component-id="OUIA-Generated-Button-danger-1" data-ouia-component-id="delete-role-modal-delete-button"
data-ouia-component-type="PF4/Button" data-ouia-component-type="PF4/Button"
data-ouia-safe={true} data-ouia-safe={true}
disabled={false} disabled={false}
@@ -518,13 +527,14 @@ exports[`<DeleteRoleConfirmationModal /> should render initially 1`] = `
<Button <Button
key="cancel" key="cancel"
onClick={[Function]} onClick={[Function]}
ouiaId="delete-role-modal-cancel-button"
variant="link" variant="link"
> >
<button <button
aria-disabled={false} aria-disabled={false}
aria-label={null} aria-label={null}
className="pf-c-button pf-m-link" className="pf-c-button pf-m-link"
data-ouia-component-id="OUIA-Generated-Button-link-1" data-ouia-component-id="delete-role-modal-cancel-button"
data-ouia-component-type="PF4/Button" data-ouia-component-type="PF4/Button"
data-ouia-safe={true} data-ouia-safe={true}
disabled={false} disabled={false}

View File

@@ -393,6 +393,7 @@ function ScheduleDetail({ hasDaysToKeepField, schedule, i18n, surveyConfig }) {
<CardActionsRow> <CardActionsRow>
{summary_fields?.user_capabilities?.edit && ( {summary_fields?.user_capabilities?.edit && (
<Button <Button
ouiaId="schedule-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
to={pathname.replace('details', 'edit')} to={pathname.replace('details', 'edit')}

View File

@@ -116,6 +116,7 @@ function ScheduleListItem({
tooltip={i18n._(t`Edit Schedule`)} tooltip={i18n._(t`Edit Schedule`)}
> >
<Button <Button
ouiaId={`${schedule.id}-edit-button`}
aria-label={i18n._(t`Edit Schedule`)} aria-label={i18n._(t`Edit Schedule`)}
css="grid-column: 2" css="grid-column: 2"
variant="plain" variant="plain"

View File

@@ -541,6 +541,7 @@ function ScheduleForm({
<FormFullWidthLayout> <FormFullWidthLayout>
<ActionGroup> <ActionGroup>
<Button <Button
ouiaId="schedule-form-save-button"
aria-label={i18n._(t`Save`)} aria-label={i18n._(t`Save`)}
variant="primary" variant="primary"
type="button" type="button"
@@ -552,6 +553,7 @@ function ScheduleForm({
{isTemplate && showPromptButton && ( {isTemplate && showPromptButton && (
<Button <Button
ouiaId="schedule-form-prompt-button"
variant="secondary" variant="secondary"
type="button" type="button"
aria-label={i18n._(t`Prompt`)} aria-label={i18n._(t`Prompt`)}
@@ -561,6 +563,7 @@ function ScheduleForm({
</Button> </Button>
)} )}
<Button <Button
ouiaId="schedule-form-cancel-button"
aria-label={i18n._(t`Cancel`)} aria-label={i18n._(t`Cancel`)}
variant="secondary" variant="secondary"
type="button" type="button"

View File

@@ -53,6 +53,7 @@ const ScreenHeader = ({ breadcrumbConfig, i18n, streamType }) => {
<div> <div>
<Tooltip content={i18n._(t`View activity stream`)} position="top"> <Tooltip content={i18n._(t`View activity stream`)} position="top">
<Button <Button
ouiaId="activity-stream-button"
aria-label={i18n._(t`View activity stream`)} aria-label={i18n._(t`View activity stream`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -159,6 +159,7 @@ function TemplateListItem({
tooltip={i18n._(t`Visualizer`)} tooltip={i18n._(t`Visualizer`)}
> >
<Button <Button
ouiaId={`${template.id}-visualizer-button`}
id={`template-action-visualizer-${template.id}`} id={`template-action-visualizer-${template.id}`}
isDisabled={isDisabled} isDisabled={isDisabled}
aria-label={i18n._(t`Visualizer`)} aria-label={i18n._(t`Visualizer`)}
@@ -176,6 +177,7 @@ function TemplateListItem({
<LaunchButton resource={template}> <LaunchButton resource={template}>
{({ handleLaunch }) => ( {({ handleLaunch }) => (
<Button <Button
ouiaId={`${template.id}-launch-button`}
id={`template-action-launch-${template.id}`} id={`template-action-launch-${template.id}`}
isDisabled={isDisabled} isDisabled={isDisabled}
aria-label={i18n._(t`Launch template`)} aria-label={i18n._(t`Launch template`)}
@@ -192,6 +194,7 @@ function TemplateListItem({
tooltip={i18n._(t`Edit Template`)} tooltip={i18n._(t`Edit Template`)}
> >
<Button <Button
ouiaId={`${template.id}-edit-button`}
id={`template-action-edit-${template.id}`} id={`template-action-edit-${template.id}`}
isDisabled={isDisabled} isDisabled={isDisabled}
aria-label={i18n._(t`Edit Template`)} aria-label={i18n._(t`Edit Template`)}

View File

@@ -156,6 +156,7 @@ function UserAndTeamAccessAdd({ i18n, title, onFetchData, apiModel }) {
</DropdownItem> </DropdownItem>
) : ( ) : (
<Button <Button
ouiaId="access-add-button"
variant="primary" variant="primary"
aria-label={i18n._(t`Add`)} aria-label={i18n._(t`Add`)}
onClick={() => setIsWizardOpen(true)} onClick={() => setIsWizardOpen(true)}

View File

@@ -90,6 +90,7 @@ function WorkflowTools({
position="bottom" position="bottom"
> >
<Button <Button
ouiaId="visualizer-zoom-to-fit-button"
variant="tertiary" variant="tertiary"
css="margin-right: 30px;" css="margin-right: 30px;"
onClick={() => onFitGraph()} onClick={() => onFitGraph()}
@@ -99,6 +100,7 @@ function WorkflowTools({
</Tooltip> </Tooltip>
<Tooltip content={i18n._(t`Zoom Out`)} position="bottom"> <Tooltip content={i18n._(t`Zoom Out`)} position="bottom">
<Button <Button
ouiaId="visualizer-zoom-out-button"
variant="tertiary" variant="tertiary"
css="margin-right: 10px;" css="margin-right: 10px;"
onClick={() => zoomOut()} onClick={() => zoomOut()}
@@ -119,6 +121,7 @@ function WorkflowTools({
/> />
<Tooltip content={i18n._(t`Zoom In`)} position="bottom"> <Tooltip content={i18n._(t`Zoom In`)} position="bottom">
<Button <Button
ouiaId="visualizer-zoom-in-button"
variant="tertiary" variant="tertiary"
css="margin: 0px 25px 0px 10px;" css="margin: 0px 25px 0px 10px;"
onClick={() => zoomIn()} onClick={() => zoomIn()}
@@ -129,6 +132,7 @@ function WorkflowTools({
<Pan> <Pan>
<Tooltip content={i18n._(t`Pan Left`)} position="left"> <Tooltip content={i18n._(t`Pan Left`)} position="left">
<Button <Button
ouiaId="visualizer-pan-left-button"
variant="tertiary" variant="tertiary"
css="margin-right: 10px;" css="margin-right: 10px;"
onClick={() => onPan('left')} onClick={() => onPan('left')}
@@ -139,6 +143,7 @@ function WorkflowTools({
<PanCenter> <PanCenter>
<Tooltip content={i18n._(t`Pan Up`)} position="top"> <Tooltip content={i18n._(t`Pan Up`)} position="top">
<Button <Button
ouiaId="visualizer-pan-up-button"
variant="tertiary" variant="tertiary"
css="margin-bottom: 10px;" css="margin-bottom: 10px;"
onClick={() => onPan('up')} onClick={() => onPan('up')}
@@ -150,12 +155,17 @@ function WorkflowTools({
content={i18n._(t`Set zoom to 100% and center graph`)} content={i18n._(t`Set zoom to 100% and center graph`)}
position="top" position="top"
> >
<Button variant="tertiary" onClick={() => onPanToMiddle()}> <Button
ouiaId="visualizer-pan-middle-button"
variant="tertiary"
onClick={() => onPanToMiddle()}
>
<HomeIcon /> <HomeIcon />
</Button> </Button>
</Tooltip> </Tooltip>
<Tooltip content={i18n._(t`Pan Down`)} position="bottom"> <Tooltip content={i18n._(t`Pan Down`)} position="bottom">
<Button <Button
ouiaId="visualizer-pan-down-button"
variant="tertiary" variant="tertiary"
css="margin-top: 10px;" css="margin-top: 10px;"
onClick={() => onPan('down')} onClick={() => onPan('down')}
@@ -166,6 +176,7 @@ function WorkflowTools({
</PanCenter> </PanCenter>
<Tooltip content={i18n._(t`Pan Right`)} position="right"> <Tooltip content={i18n._(t`Pan Right`)} position="right">
<Button <Button
ouiaId="visualizer-pan-right-button"
variant="tertiary" variant="tertiary"
css="margin-left: 10px;" css="margin-left: 10px;"
onClick={() => onPan('right')} onClick={() => onPan('right')}

View File

@@ -21,6 +21,7 @@ function ActivityStreamDetailButton({ i18n, streamItem, user, description }) {
return ( return (
<> <>
<Button <Button
ouiaId={`${streamItem.id}-view-details-button`}
aria-label={i18n._(t`View event details`)} aria-label={i18n._(t`View event details`)}
variant="plain" variant="plain"
component="button" component="button"

View File

@@ -112,6 +112,7 @@ function ApplicationDetails({
{application.summary_fields.user_capabilities && {application.summary_fields.user_capabilities &&
application.summary_fields.user_capabilities.edit && ( application.summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="application-details-edit-button"
component={Link} component={Link}
to={`/applications/${application.id}/edit`} to={`/applications/${application.id}/edit`}
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}

View File

@@ -50,6 +50,7 @@ function ApplicationListItem({
tooltip={i18n._(t`Edit application`)} tooltip={i18n._(t`Edit application`)}
> >
<Button <Button
ouiaId={`${application.id}-edit-button`}
aria-label={i18n._(t`Edit application`)} aria-label={i18n._(t`Edit application`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -259,7 +259,11 @@ function CredentialDetail({ i18n, credential }) {
)} )}
<CardActionsRow> <CardActionsRow>
{user_capabilities.edit && ( {user_capabilities.edit && (
<Button component={Link} to={`/credentials/${credentialId}/edit`}> <Button
ouiaId="credential-detail-edit-button"
component={Link}
to={`/credentials/${credentialId}/edit`}
>
{i18n._(t`Edit`)} {i18n._(t`Edit`)}
</Button> </Button>
)} )}

View File

@@ -63,6 +63,7 @@ function CredentialListItem({
<ActionsTd dataLabel={i18n._(t`Actions`)}> <ActionsTd dataLabel={i18n._(t`Actions`)}>
<ActionItem visible={canEdit} tooltip={i18n._(t`Edit Credential`)}> <ActionItem visible={canEdit} tooltip={i18n._(t`Edit Credential`)}>
<Button <Button
ouiaId={`${credential.id}-edit-button`}
isDisabled={isDisabled} isDisabled={isDisabled}
aria-label={i18n._(t`Edit Credential`)} aria-label={i18n._(t`Edit Credential`)}
variant="plain" variant="plain"

View File

@@ -269,6 +269,7 @@ function CredentialForm({
<FormFullWidthLayout> <FormFullWidthLayout>
<ActionGroup> <ActionGroup>
<Button <Button
ouiaId="credential-form-save-button"
id="credential-form-save-button" id="credential-form-save-button"
aria-label={i18n._(t`Save`)} aria-label={i18n._(t`Save`)}
variant="primary" variant="primary"
@@ -281,6 +282,7 @@ function CredentialForm({
credentialTypes[formik.values.credential_type]?.kind === credentialTypes[formik.values.credential_type]?.kind ===
'external' && ( 'external' && (
<Button <Button
ouiaId="credential-form-test-button"
id="credential-form-test-button" id="credential-form-test-button"
aria-label={i18n._(t`Test`)} aria-label={i18n._(t`Test`)}
variant="secondary" variant="secondary"
@@ -292,6 +294,7 @@ function CredentialForm({
</Button> </Button>
)} )}
<Button <Button
ouiaId="credential-form-cancel-button"
id="credential-form-cancel-button" id="credential-form-cancel-button"
aria-label={i18n._(t`Cancel`)} aria-label={i18n._(t`Cancel`)}
variant="link" variant="link"

View File

@@ -45,6 +45,7 @@ function CredentialPluginInput(props) {
credential={inputField?.value?.credential} credential={inputField?.value?.credential}
onClearPlugin={() => helpers.setValue('')} onClearPlugin={() => helpers.setValue('')}
onEditPlugin={() => setShowPluginWizard(true)} onEditPlugin={() => setShowPluginWizard(true)}
fieldId={fieldOptions.id}
/> />
) : ( ) : (
<InputGroup> <InputGroup>
@@ -63,6 +64,7 @@ function CredentialPluginInput(props) {
)} )}
> >
<Button <Button
ouiaId={`credential-field-${fieldOptions.id}-external-button`}
id={`credential-${fieldOptions.id}-external-button`} id={`credential-${fieldOptions.id}-external-button`}
variant={ButtonVariant.control} variant={ButtonVariant.control}
aria-label={i18n._( aria-label={i18n._(

View File

@@ -58,6 +58,7 @@ function CredentialPluginWizard({ i18n, handleSubmit, onClose }) {
{({ activeStep, onNext, onBack }) => ( {({ activeStep, onNext, onBack }) => (
<> <>
<Button <Button
ouiaId="credential-plugin-prompt-next"
id="credential-plugin-prompt-next" id="credential-plugin-prompt-next"
variant="primary" variant="primary"
onClick={onNext} onClick={onNext}
@@ -74,6 +75,7 @@ function CredentialPluginWizard({ i18n, handleSubmit, onClose }) {
position="right" position="right"
> >
<Button <Button
ouiaId="credential-plugin-prompt-test"
id="credential-plugin-prompt-test" id="credential-plugin-prompt-test"
variant="secondary" variant="secondary"
onClick={() => testPluginMetadata()} onClick={() => testPluginMetadata()}
@@ -83,6 +85,7 @@ function CredentialPluginWizard({ i18n, handleSubmit, onClose }) {
</Tooltip> </Tooltip>
<Button <Button
ouiaId="credential-plugin-prompt-back"
id="credential-plugin-prompt-back" id="credential-plugin-prompt-back"
variant="secondary" variant="secondary"
onClick={onBack} onClick={onBack}
@@ -92,6 +95,7 @@ function CredentialPluginWizard({ i18n, handleSubmit, onClose }) {
</> </>
)} )}
<Button <Button
ouiaId="credential-plugin-prompt-cancel"
id="credential-plugin-prompt-cancel" id="credential-plugin-prompt-cancel"
variant="link" variant="link"
onClick={onClose} onClick={onClose}

View File

@@ -28,6 +28,7 @@ function CredentialPluginSelected({
credential, credential,
onEditPlugin, onEditPlugin,
onClearPlugin, onClearPlugin,
fieldId,
}) { }) {
return ( return (
<> <>
@@ -38,6 +39,7 @@ function CredentialPluginSelected({
position="top" position="top"
> >
<Button <Button
ouiaId={`credential-field-${fieldId}-edit-plugin-button`}
aria-label={i18n._(t`Edit Credential Plugin Configuration`)} aria-label={i18n._(t`Edit Credential Plugin Configuration`)}
onClick={onEditPlugin} onClick={onEditPlugin}
variant={ButtonVariant.control} variant={ButtonVariant.control}

View File

@@ -81,6 +81,7 @@ function ExternalTestModal({
variant="small" variant="small"
actions={[ actions={[
<Button <Button
ouiaId="external-test-modal-run-button"
id="run-external-credential-test" id="run-external-credential-test"
key="confirm" key="confirm"
variant="primary" variant="primary"
@@ -89,6 +90,7 @@ function ExternalTestModal({
{i18n._(t`Run`)} {i18n._(t`Run`)}
</Button>, </Button>,
<Button <Button
ouiaId="external-test-modal-cancel-button"
id="cancel-external-credential-test" id="cancel-external-credential-test"
key="cancel" key="cancel"
variant="link" variant="link"

View File

@@ -68,6 +68,7 @@ function CredentialTypeDetails({ credentialType, i18n }) {
{credentialType.summary_fields.user_capabilities && {credentialType.summary_fields.user_capabilities &&
credentialType.summary_fields.user_capabilities.edit && ( credentialType.summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="credential-type-detail-edit-button"
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
component={Link} component={Link}
to={`/credential_types/${id}/edit`} to={`/credential_types/${id}/edit`}

View File

@@ -40,6 +40,7 @@ function CredentialTypeListItem({
tooltip={i18n._(t`Edit credential type`)} tooltip={i18n._(t`Edit credential type`)}
> >
<Button <Button
ouiaId={`${credentialType.id}-edit-button`}
aria-label={i18n._(t`Edit credential type`)} aria-label={i18n._(t`Edit credential type`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -107,10 +107,10 @@ function ExecutionEnvironmentDetails({ executionEnvironment, i18n }) {
{!managedByTower && ( {!managedByTower && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="execution-environment-detail-edit-button"
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
component={Link} component={Link}
to={`/execution_environments/${id}/edit`} to={`/execution_environments/${id}/edit`}
ouiaId="edit-button"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}
</Button> </Button>

View File

@@ -81,7 +81,7 @@ function ExecutionEnvironmentListItem({
tooltip={i18n._(t`Edit Execution Environment`)} tooltip={i18n._(t`Edit Execution Environment`)}
> >
<Button <Button
ouiaId={`edit-ee-${executionEnvironment.id}`} ouiaId={`${executionEnvironment.id}-edit-button`}
aria-label={i18n._(t`Edit Execution Environment`)} aria-label={i18n._(t`Edit Execution Environment`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -109,6 +109,7 @@ function HostDetail({ i18n, host }) {
<CardActionsRow> <CardActionsRow>
{user_capabilities?.edit && ( {user_capabilities?.edit && (
<Button <Button
ouiaId="host-detail-edit-button"
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
component={Link} component={Link}
to={`/hosts/${id}/edit`} to={`/hosts/${id}/edit`}

View File

@@ -48,7 +48,12 @@ function HostGroupItem({ i18n, group, inventoryId, isSelected, onSelect }) {
> >
{group.summary_fields.user_capabilities.edit && ( {group.summary_fields.user_capabilities.edit && (
<Tooltip content={i18n._(t`Edit Group`)} position="top"> <Tooltip content={i18n._(t`Edit Group`)} position="top">
<Button variant="plain" component={Link} to={editUrl}> <Button
ouiaId={`${group.id}-edit-button`}
variant="plain"
component={Link}
to={editUrl}
>
<PencilAltIcon /> <PencilAltIcon />
</Button> </Button>
</Tooltip> </Tooltip>

View File

@@ -52,6 +52,7 @@ function HostListItem({
tooltip={i18n._(t`Edit Host`)} tooltip={i18n._(t`Edit Host`)}
> >
<Button <Button
ouiaId={`${host.id}-edit-button}`}
aria-label={i18n._(t`Edit Host`)} aria-label={i18n._(t`Edit Host`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -35,6 +35,7 @@ function SmartInventoryButton({ onClick, i18n, isDisabled }) {
> >
<div> <div>
<Button <Button
ouiaId="smart-inventory-button"
onClick={onClick} onClick={onClick}
aria-label={i18n._(t`Smart Inventory`)} aria-label={i18n._(t`Smart Inventory`)}
variant="secondary" variant="secondary"

View File

@@ -86,6 +86,7 @@ function ContainerGroupDetails({ instanceGroup, i18n }) {
{instanceGroup.summary_fields.user_capabilities && {instanceGroup.summary_fields.user_capabilities &&
instanceGroup.summary_fields.user_capabilities.edit && ( instanceGroup.summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="container-group-detail-edit-button"
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
component={Link} component={Link}
to={`/instance_groups/container_group/${id}/edit`} to={`/instance_groups/container_group/${id}/edit`}

View File

@@ -126,6 +126,7 @@ function InstanceGroupDetails({ instanceGroup, i18n }) {
{instanceGroup.summary_fields.user_capabilities && {instanceGroup.summary_fields.user_capabilities &&
instanceGroup.summary_fields.user_capabilities.edit && ( instanceGroup.summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="instance-group-detail-edit-button"
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
component={Link} component={Link}
to={`/instance_groups/${id}/edit`} to={`/instance_groups/${id}/edit`}

View File

@@ -105,6 +105,7 @@ function InstanceGroupListItem({
tooltip={i18n._(t`Edit instance group`)} tooltip={i18n._(t`Edit instance group`)}
> >
<Button <Button
ouiaId={`${instanceGroup.id}-edit-button`}
aria-label={i18n._(t`Edit instance group`)} aria-label={i18n._(t`Edit instance group`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -114,6 +114,7 @@ function InventoryDetail({ inventory, i18n }) {
<CardActionsRow> <CardActionsRow>
{userCapabilities.edit && ( {userCapabilities.edit && (
<Button <Button
ouiaId="inventory-detail-edit-button"
component={Link} component={Link}
to={`/inventories/inventory/${inventory.id}/edit`} to={`/inventories/inventory/${inventory.id}/edit`}
> >

View File

@@ -56,6 +56,7 @@ function InventoryGroupDetail({ i18n, inventoryGroup }) {
<CardActionsRow> <CardActionsRow>
{user_capabilities?.edit && ( {user_capabilities?.edit && (
<Button <Button
ouiaId="inventory-group-detail-edit-button"
variant="primary" variant="primary"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
onClick={() => onClick={() =>

View File

@@ -74,6 +74,7 @@ function InventoryGroupHostListItem({
{host.summary_fields.user_capabilities?.edit && ( {host.summary_fields.user_capabilities?.edit && (
<Tooltip content={i18n._(t`Edit Host`)} position="top"> <Tooltip content={i18n._(t`Edit Host`)} position="top">
<Button <Button
ouiaId={`${host.id}-edit-button`}
aria-label={i18n._(t`Edit Host`)} aria-label={i18n._(t`Edit Host`)}
css="grid-column: 2" css="grid-column: 2"
variant="plain" variant="plain"

View File

@@ -55,6 +55,7 @@ function InventoryGroupItem({
{group.summary_fields.user_capabilities.edit && ( {group.summary_fields.user_capabilities.edit && (
<Tooltip content={i18n._(t`Edit Group`)} position="top"> <Tooltip content={i18n._(t`Edit Group`)} position="top">
<Button <Button
ouiaId={`${group.id}-edit-button`}
aria-label={i18n._(t`Edit Group`)} aria-label={i18n._(t`Edit Group`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -99,6 +99,7 @@ function InventoryHostDetail({ i18n, host }) {
<CardActionsRow> <CardActionsRow>
{user_capabilities?.edit && ( {user_capabilities?.edit && (
<Button <Button
ouiaId="inventory-host-detail-edit-button"
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
component={Link} component={Link}
to={`/inventories/inventory/${inventory.id}/hosts/${id}/edit`} to={`/inventories/inventory/${inventory.id}/hosts/${id}/edit`}

View File

@@ -54,7 +54,12 @@ function InventoryHostGroupItem({
> >
{group.summary_fields.user_capabilities.edit && ( {group.summary_fields.user_capabilities.edit && (
<Tooltip content={i18n._(t`Edit Group`)} position="top"> <Tooltip content={i18n._(t`Edit Group`)} position="top">
<Button variant="plain" component={Link} to={editUrl}> <Button
ouiaId={`${group.id}-edit-button`}
variant="plain"
component={Link}
to={editUrl}
>
<PencilAltIcon /> <PencilAltIcon />
</Button> </Button>
</Tooltip> </Tooltip>

View File

@@ -66,7 +66,12 @@ function InventoryHostItem(props) {
<HostToggle host={host} /> <HostToggle host={host} />
{host.summary_fields.user_capabilities?.edit && ( {host.summary_fields.user_capabilities?.edit && (
<Tooltip content={i18n._(t`Edit Host`)} position="top"> <Tooltip content={i18n._(t`Edit Host`)} position="top">
<Button variant="plain" component={Link} to={`${editUrl}`}> <Button
ouiaId={`${host.id}-edit-button`}
variant="plain"
component={Link}
to={`${editUrl}`}
>
<PencilAltIcon /> <PencilAltIcon />
</Button> </Button>
</Tooltip> </Tooltip>

View File

@@ -115,6 +115,7 @@ function InventoryListItem({
tooltip={i18n._(t`Edit Inventory`)} tooltip={i18n._(t`Edit Inventory`)}
> >
<Button <Button
ouiaId={`${inventory.id}-edit-button`}
isDisabled={isCopying} isDisabled={isCopying}
aria-label={i18n._(t`Edit Inventory`)} aria-label={i18n._(t`Edit Inventory`)}
variant="plain" variant="plain"

View File

@@ -63,6 +63,7 @@ function InventoryRelatedGroupListItem({
{group.summary_fields.user_capabilities?.edit && ( {group.summary_fields.user_capabilities?.edit && (
<Tooltip content={i18n._(t`Edit Group`)} position="top"> <Tooltip content={i18n._(t`Edit Group`)} position="top">
<Button <Button
ouiaId={`${group.id}-edit-button`}
aria-label={i18n._(t`Edit Group`)} aria-label={i18n._(t`Edit Group`)}
css="grid-column: 2" css="grid-column: 2"
variant="plain" variant="plain"

View File

@@ -265,6 +265,7 @@ function InventorySourceDetail({ inventorySource, i18n }) {
<CardActionsRow> <CardActionsRow>
{user_capabilities?.edit && ( {user_capabilities?.edit && (
<Button <Button
ouiaId="inventory-source-detail-edit-button"
component={Link} component={Link}
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
to={`/inventories/inventory/${inventory.id}/sources/${id}/edit`} to={`/inventories/inventory/${inventory.id}/sources/${id}/edit`}

View File

@@ -183,6 +183,7 @@ function InventorySourceList({ i18n }) {
position="top" position="top"
> >
<Button <Button
ouiaId="sync-all-button"
onClick={syncAll} onClick={syncAll}
aria-label={i18n._(t`Sync all`)} aria-label={i18n._(t`Sync all`)}
variant="secondary" variant="secondary"

View File

@@ -122,6 +122,7 @@ function InventorySourceListItem({
)} )}
{source.summary_fields.user_capabilities.edit && ( {source.summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId={`${source.id}-edit-button`}
aria-label={i18n._(t`Edit Source`)} aria-label={i18n._(t`Edit Source`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -151,6 +151,7 @@ function SmartInventoryDetail({ inventory, i18n }) {
<CardActionsRow> <CardActionsRow>
{user_capabilities?.edit && ( {user_capabilities?.edit && (
<Button <Button
ouiaId="smart-inventory-detail-edit-button"
component={Link} component={Link}
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
to={`/inventories/smart_inventory/${id}/edit`} to={`/inventories/smart_inventory/${id}/edit`}

View File

@@ -57,6 +57,7 @@ function InventorySourceSyncButton({ source, icon, i18n }) {
{['running', 'pending', 'updating'].includes(source.status) ? ( {['running', 'pending', 'updating'].includes(source.status) ? (
<Tooltip content={i18n._(t`Cancel sync process`)} position="top"> <Tooltip content={i18n._(t`Cancel sync process`)} position="top">
<Button <Button
ouiaId={`${source}-cancel-sync-button`}
isDisabled={cancelSyncLoading || startSyncLoading} isDisabled={cancelSyncLoading || startSyncLoading}
aria-label={i18n._(t`Cancel sync source`)} aria-label={i18n._(t`Cancel sync source`)}
variant={icon ? 'plain' : 'secondary'} variant={icon ? 'plain' : 'secondary'}
@@ -68,6 +69,7 @@ function InventorySourceSyncButton({ source, icon, i18n }) {
) : ( ) : (
<Tooltip content={i18n._(t`Start sync process`)} position="top"> <Tooltip content={i18n._(t`Start sync process`)} position="top">
<Button <Button
ouiaId={`${source}-sync-button`}
isDisabled={cancelSyncLoading || startSyncLoading} isDisabled={cancelSyncLoading || startSyncLoading}
aria-label={i18n._(t`Start sync source`)} aria-label={i18n._(t`Start sync source`)}
variant={icon ? 'plain' : 'secondary'} variant={icon ? 'plain' : 'secondary'}

View File

@@ -387,13 +387,21 @@ function JobDetail({ job, i18n }) {
(job.status === 'failed' && job.type === 'job' ? ( (job.status === 'failed' && job.type === 'job' ? (
<LaunchButton resource={job}> <LaunchButton resource={job}>
{({ handleRelaunch }) => ( {({ handleRelaunch }) => (
<ReLaunchDropDown isPrimary handleRelaunch={handleRelaunch} /> <ReLaunchDropDown
ouiaId="job-detail-relaunch-dropdown"
isPrimary
handleRelaunch={handleRelaunch}
/>
)} )}
</LaunchButton> </LaunchButton>
) : ( ) : (
<LaunchButton resource={job} aria-label={i18n._(t`Relaunch`)}> <LaunchButton resource={job} aria-label={i18n._(t`Relaunch`)}>
{({ handleRelaunch }) => ( {({ handleRelaunch }) => (
<Button type="submit" onClick={handleRelaunch}> <Button
ouiaId="job-detail-relaunch-button"
type="submit"
onClick={handleRelaunch}
>
{i18n._(t`Relaunch`)} {i18n._(t`Relaunch`)}
</Button> </Button>
)} )}

View File

@@ -95,6 +95,7 @@ function ManagementJobListItem({
position="top" position="top"
> >
<Button <Button
ouiaId={`${id}-launch-button`}
aria-label={i18n._(t`Launch management job`)} aria-label={i18n._(t`Launch management job`)}
variant="plain" variant="plain"
onClick={handleLaunch} onClick={handleLaunch}

View File

@@ -350,6 +350,7 @@ function NotificationTemplateDetail({ i18n, template, defaultMessages }) {
{summary_fields.user_capabilities && {summary_fields.user_capabilities &&
summary_fields.user_capabilities.edit && ( summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="notification-template-detail-edit-button"
component={Link} component={Link}
to={`/notification_templates/${template.id}/edit`} to={`/notification_templates/${template.id}/edit`}
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}

View File

@@ -142,6 +142,7 @@ function OrganizationDetail({ i18n, organization }) {
<CardActionsRow> <CardActionsRow>
{summary_fields.user_capabilities.edit && ( {summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="organization-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
to={`/organizations/${id}/edit`} to={`/organizations/${id}/edit`}

View File

@@ -74,6 +74,7 @@ function OrganizationListItem({
tooltip={i18n._(t`Edit Organization`)} tooltip={i18n._(t`Edit Organization`)}
> >
<Button <Button
ouiaId={`${organization.id}-edit-button`}
aria-label={i18n._(t`Edit Organization`)} aria-label={i18n._(t`Edit Organization`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -39,6 +39,7 @@ function OrganizationTeamListItem({ i18n, team, detailUrl }) {
{team.summary_fields.user_capabilities.edit && ( {team.summary_fields.user_capabilities.edit && (
<Tooltip content={i18n._(t`Edit Team`)} position="top"> <Tooltip content={i18n._(t`Edit Team`)} position="top">
<Button <Button
ouiaId={`${team.id}-edit-button`}
aria-label={i18n._(t`Edit Team`)} aria-label={i18n._(t`Edit Team`)}
css="grid-column: 2" css="grid-column: 2"
variant="plain" variant="plain"

View File

@@ -154,6 +154,7 @@ function ProjectDetail({ project, i18n }) {
<CardActionsRow> <CardActionsRow>
{summary_fields.user_capabilities?.edit && ( {summary_fields.user_capabilities?.edit && (
<Button <Button
ouiaId="project-detail-edit-button"
aria-label={i18n._(t`edit`)} aria-label={i18n._(t`edit`)}
component={Link} component={Link}
to={`/projects/${id}/edit`} to={`/projects/${id}/edit`}

View File

@@ -118,6 +118,7 @@ function ProjectJobTemplateListItem({
<LaunchButton resource={template}> <LaunchButton resource={template}>
{({ handleLaunch }) => ( {({ handleLaunch }) => (
<Button <Button
ouiaId={`${template.id}-launch-button`}
css="grid-column: 1" css="grid-column: 1"
variant="plain" variant="plain"
onClick={handleLaunch} onClick={handleLaunch}
@@ -131,6 +132,7 @@ function ProjectJobTemplateListItem({
{template.summary_fields.user_capabilities.edit && ( {template.summary_fields.user_capabilities.edit && (
<Tooltip content={i18n._(t`Edit Template`)} position="top"> <Tooltip content={i18n._(t`Edit Template`)} position="top">
<Button <Button
ouiaId={`${template.id}-edit-button`}
css="grid-column: 2" css="grid-column: 2"
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -146,6 +146,7 @@ function ProjectListItem({
stringToCopy={project.scm_revision} stringToCopy={project.scm_revision}
copyTip={i18n._(t`Copy full revision to clipboard.`)} copyTip={i18n._(t`Copy full revision to clipboard.`)}
copiedSuccessTip={i18n._(t`Successfully copied to clipboard!`)} copiedSuccessTip={i18n._(t`Successfully copied to clipboard!`)}
ouiaId="copy-revision-button"
/> />
</Td> </Td>
<ActionsTd dataLabel={i18n._(t`Actions`)}> <ActionsTd dataLabel={i18n._(t`Actions`)}>
@@ -160,6 +161,7 @@ function ProjectListItem({
tooltip={i18n._(t`Edit Project`)} tooltip={i18n._(t`Edit Project`)}
> >
<Button <Button
ouiaId={`${project.id}-edit-button`}
isDisabled={isDisabled} isDisabled={isDisabled}
aria-label={i18n._(t`Edit Project`)} aria-label={i18n._(t`Edit Project`)}
variant="plain" variant="plain"

View File

@@ -27,6 +27,7 @@ function ProjectSyncButton({ i18n, projectId }) {
return ( return (
<> <>
<Button <Button
ouiaId={`${projectId}-sync-button`}
aria-label={i18n._(t`Sync Project`)} aria-label={i18n._(t`Sync Project`)}
variant={isDetailsView ? 'secondary' : 'plain'} variant={isDetailsView ? 'secondary' : 'plain'}
onClick={handleSync} onClick={handleSync}

View File

@@ -84,9 +84,9 @@ function ActivityStreamDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="activity-stream-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/activity_stream/edit" to="/settings/activity_stream/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -76,9 +76,9 @@ function AzureADDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="azure-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/azure/edit" to="/settings/azure/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -139,9 +139,9 @@ function GitHubDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="github-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to={`${baseURL}/${category}/edit`} to={`${baseURL}/${category}/edit`}
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -76,9 +76,9 @@ function GoogleOAuth2Detail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="google-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/google_oauth2/edit" to="/settings/google_oauth2/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -93,9 +93,9 @@ function JobsDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="jobs-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/jobs/edit" to="/settings/jobs/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -157,9 +157,9 @@ function LDAPDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="ldap-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to={`${baseURL}/${category}/edit`} to={`${baseURL}/${category}/edit`}
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -11,9 +11,9 @@ function LicenseDetail({ i18n }) {
{i18n._(t`Detail coming soon :)`)} {i18n._(t`Detail coming soon :)`)}
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="license-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/license/edit" to="/settings/license/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -97,9 +97,9 @@ function LoggingDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="logging-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/logging/edit" to="/settings/logging/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -137,9 +137,9 @@ function MiscSystemDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="system-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/miscellaneous_system/edit" to="/settings/miscellaneous_system/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -76,9 +76,9 @@ function RADIUSDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="radius-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/radius/edit" to="/settings/radius/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -77,9 +77,9 @@ function SAMLDetail({ i18n }) {
{me?.is_superuser && ( {me?.is_superuser && (
<CardActionsRow> <CardActionsRow>
<Button <Button
ouiaId="saml-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
ouiaId="edit-button"
to="/settings/saml/edit" to="/settings/saml/edit"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}

View File

@@ -79,7 +79,7 @@ function TACACSDetail({ i18n }) {
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
to="/settings/tacacs/edit" to="/settings/tacacs/edit"
ouiaId="edit-button" ouiaId="tacacs-detail-edit-button"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}
</Button> </Button>

View File

@@ -94,7 +94,7 @@ function UIDetail({ i18n }) {
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
to="/settings/ui/edit" to="/settings/ui/edit"
ouiaId="edit-button" ouiaId="ui-detail-edit-button"
> >
{i18n._(t`Edit`)} {i18n._(t`Edit`)}
</Button> </Button>

View File

@@ -14,20 +14,20 @@ function RevertAllAlert({ i18n, onClose, onRevertAll }) {
ouiaId="revert-all-modal" ouiaId="revert-all-modal"
actions={[ actions={[
<Button <Button
ouiaId="revert-all-confirm-button"
key="revert" key="revert"
variant="primary" variant="primary"
aria-label={i18n._(t`Confirm revert all`)} aria-label={i18n._(t`Confirm revert all`)}
onClick={onRevertAll} onClick={onRevertAll}
ouiaId="confirm-revert-all-button"
> >
{i18n._(t`Revert all`)} {i18n._(t`Revert all`)}
</Button>, </Button>,
<Button <Button
ouiaId="revert-all-cancel-button"
key="cancel" key="cancel"
variant="link" variant="link"
aria-label={i18n._(t`Cancel revert`)} aria-label={i18n._(t`Cancel revert`)}
onClick={onClose} onClick={onClose}
ouiaId="cancel-revert-all-button"
> >
{i18n._(t`Cancel`)} {i18n._(t`Cancel`)}
</Button>, </Button>,

View File

@@ -54,6 +54,7 @@ function TeamDetail({ team, i18n }) {
{summary_fields.user_capabilities && {summary_fields.user_capabilities &&
summary_fields.user_capabilities.edit && ( summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="team-detail-edit-button"
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
component={Link} component={Link}
to={`/teams/${id}/edit`} to={`/teams/${id}/edit`}

View File

@@ -57,6 +57,7 @@ function TeamListItem({
tooltip={i18n._(t`Edit Team`)} tooltip={i18n._(t`Edit Team`)}
> >
<Button <Button
ouiaId={`${team.id}-edit-button`}
aria-label={i18n._(t`Edit Team`)} aria-label={i18n._(t`Edit Team`)}
variant="plain" variant="plain"
component={Link} component={Link}

View File

@@ -196,6 +196,7 @@ function TeamRolesList({ i18n, me, team }) {
onClose={() => setRoleToDisassociate(null)} onClose={() => setRoleToDisassociate(null)}
actions={[ actions={[
<Button <Button
ouiaId="disassociate-confirm-button"
key="disassociate" key="disassociate"
variant="danger" variant="danger"
aria-label={i18n._(t`confirm disassociate`)} aria-label={i18n._(t`confirm disassociate`)}
@@ -204,6 +205,7 @@ function TeamRolesList({ i18n, me, team }) {
{i18n._(t`Disassociate`)} {i18n._(t`Disassociate`)}
</Button>, </Button>,
<Button <Button
ouiaId="disassociate-cancel-button"
key="cancel" key="cancel"
variant="link" variant="link"
aria-label={i18n._(t`Cancel`)} aria-label={i18n._(t`Cancel`)}

View File

@@ -372,6 +372,7 @@ function JobTemplateDetail({ i18n, template }) {
{summary_fields.user_capabilities && {summary_fields.user_capabilities &&
summary_fields.user_capabilities.edit && ( summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="job-template-detail-edit-button"
component={Link} component={Link}
to={`/templates/job_template/${templateId}/edit`} to={`/templates/job_template/${templateId}/edit`}
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
@@ -382,7 +383,12 @@ function JobTemplateDetail({ i18n, template }) {
{canLaunch && ( {canLaunch && (
<LaunchButton resource={template} aria-label={i18n._(t`Launch`)}> <LaunchButton resource={template} aria-label={i18n._(t`Launch`)}>
{({ handleLaunch }) => ( {({ handleLaunch }) => (
<Button variant="secondary" type="submit" onClick={handleLaunch}> <Button
ouiaId="job-template-detail-launch-button"
variant="secondary"
type="submit"
onClick={handleLaunch}
>
{i18n._(t`Launch`)} {i18n._(t`Launch`)}
</Button> </Button>
)} )}

View File

@@ -98,6 +98,7 @@ function SurveyList({
}} }}
actions={[ actions={[
<Button <Button
ouiaId="delete-confirm-button"
key="delete" key="delete"
variant="danger" variant="danger"
aria-label={i18n._(t`confirm delete`)} aria-label={i18n._(t`confirm delete`)}
@@ -106,6 +107,7 @@ function SurveyList({
{i18n._(t`Delete`)} {i18n._(t`Delete`)}
</Button>, </Button>,
<Button <Button
ouiaId="delete-cancel-button"
key="cancel" key="cancel"
variant="link" variant="link"
aria-label={i18n._(t`cancel delete`)} aria-label={i18n._(t`cancel delete`)}

View File

@@ -66,6 +66,7 @@ function SurveyListItem({
<Stack> <Stack>
<StackItem> <StackItem>
<Button <Button
ouiaId={`${question.variable}-move-up-button`}
variant="plain" variant="plain"
aria-label={i18n._(t`move up`)} aria-label={i18n._(t`move up`)}
isDisabled={isFirst || !canEdit} isDisabled={isFirst || !canEdit}
@@ -76,6 +77,7 @@ function SurveyListItem({
</StackItem> </StackItem>
<StackItem> <StackItem>
<Button <Button
ouiaId={`${question.variable}-move-down-button`}
variant="plain" variant="plain"
aria-label={i18n._(t`move down`)} aria-label={i18n._(t`move down`)}
isDisabled={isLast || !canEdit} isDisabled={isLast || !canEdit}

View File

@@ -65,6 +65,7 @@ function SurveyToolbar({
</ToolbarItem> </ToolbarItem>
<ToolbarItem> <ToolbarItem>
<Button <Button
ouiaId="survey-delete-button"
variant="secondary" variant="secondary"
isDisabled={isDeleteDisabled} isDisabled={isDeleteDisabled}
onClick={() => onToggleDeleteModal(true)} onClick={() => onToggleDeleteModal(true)}

View File

@@ -212,6 +212,7 @@ function WorkflowJobTemplateDetail({ template, i18n }) {
{summary_fields.user_capabilities && {summary_fields.user_capabilities &&
summary_fields.user_capabilities.edit && ( summary_fields.user_capabilities.edit && (
<Button <Button
ouiaId="workflow-job-template-detail-edit-button"
component={Link} component={Link}
to={`/templates/workflow_job_template/${id}/edit`} to={`/templates/workflow_job_template/${id}/edit`}
aria-label={i18n._(t`Edit`)} aria-label={i18n._(t`Edit`)}
@@ -222,7 +223,12 @@ function WorkflowJobTemplateDetail({ template, i18n }) {
{canLaunch && ( {canLaunch && (
<LaunchButton resource={template} aria-label={i18n._(t`Launch`)}> <LaunchButton resource={template} aria-label={i18n._(t`Launch`)}>
{({ handleLaunch }) => ( {({ handleLaunch }) => (
<Button variant="secondary" type="submit" onClick={handleLaunch}> <Button
ouiaId="workflow-job-template-detail-launch-button"
variant="secondary"
type="submit"
onClick={handleLaunch}
>
{i18n._(t`Launch`)} {i18n._(t`Launch`)}
</Button> </Button>
)} )}

View File

@@ -11,6 +11,7 @@ function DeleteAllNodesModal({ i18n }) {
<AlertModal <AlertModal
actions={[ actions={[
<Button <Button
ouiaId="delete-all-confirm-button"
id="confirm-delete-all-nodes" id="confirm-delete-all-nodes"
key="remove" key="remove"
variant="danger" variant="danger"
@@ -20,6 +21,7 @@ function DeleteAllNodesModal({ i18n }) {
{i18n._(t`Remove`)} {i18n._(t`Remove`)}
</Button>, </Button>,
<Button <Button
ouiaId="delete-all-cancel-button"
id="cancel-delete-all-nodes" id="cancel-delete-all-nodes"
key="cancel" key="cancel"
variant="link" variant="link"

View File

@@ -19,6 +19,7 @@ function LinkDeleteModal({ i18n }) {
onClose={() => dispatch({ type: 'SET_LINK_TO_DELETE', value: null })} onClose={() => dispatch({ type: 'SET_LINK_TO_DELETE', value: null })}
actions={[ actions={[
<Button <Button
ouiaId="link-remove-confirm-button"
id="confirm-link-removal" id="confirm-link-removal"
aria-label={i18n._(t`Confirm link removal`)} aria-label={i18n._(t`Confirm link removal`)}
key="remove" key="remove"
@@ -28,6 +29,7 @@ function LinkDeleteModal({ i18n }) {
{i18n._(t`Remove`)} {i18n._(t`Remove`)}
</Button>, </Button>,
<Button <Button
ouiaId="link-remove-cancel-button"
id="cancel-link-removal" id="cancel-link-removal"
aria-label={i18n._(t`Cancel link removal`)} aria-label={i18n._(t`Cancel link removal`)}
key="cancel" key="cancel"

View File

@@ -25,6 +25,7 @@ function LinkModal({ header, i18n, onConfirm }) {
onClose={() => dispatch({ type: 'CANCEL_LINK_MODAL' })} onClose={() => dispatch({ type: 'CANCEL_LINK_MODAL' })}
actions={[ actions={[
<Button <Button
ouiaId="link-confirm-button"
id="link-confirm" id="link-confirm"
key="save" key="save"
variant="primary" variant="primary"
@@ -34,6 +35,7 @@ function LinkModal({ header, i18n, onConfirm }) {
{i18n._(t`Save`)} {i18n._(t`Save`)}
</Button>, </Button>,
<Button <Button
ouiaId="link-cancel-button"
id="link-cancel" id="link-cancel"
key="cancel" key="cancel"
variant="link" variant="link"

View File

@@ -20,6 +20,7 @@ function NodeDeleteModal({ i18n }) {
onClose={() => dispatch({ type: 'SET_NODE_TO_DELETE', value: null })} onClose={() => dispatch({ type: 'SET_NODE_TO_DELETE', value: null })}
actions={[ actions={[
<Button <Button
ouiaId="node-removal-confirm-button"
id="confirm-node-removal" id="confirm-node-removal"
key="remove" key="remove"
variant="danger" variant="danger"
@@ -29,6 +30,7 @@ function NodeDeleteModal({ i18n }) {
{i18n._(t`Remove`)} {i18n._(t`Remove`)}
</Button>, </Button>,
<Button <Button
ouiaId="node-removal-cancel-button"
id="cancel-node-removal" id="cancel-node-removal"
key="cancel" key="cancel"
variant="link" variant="link"

View File

@@ -134,6 +134,7 @@ function NodeModalForm({
/> />
{activeStep && activeStep.id !== promptSteps[0]?.id && ( {activeStep && activeStep.id !== promptSteps[0]?.id && (
<Button <Button
ouiaId="node-modal-back-button"
id="back-node-modal" id="back-node-modal"
variant="secondary" variant="secondary"
aria-label={i18n._(t`Back`)} aria-label={i18n._(t`Back`)}
@@ -143,6 +144,7 @@ function NodeModalForm({
</Button> </Button>
)} )}
<Button <Button
ouiaId="node-modal-cancel-button"
id="cancel-node-modal" id="cancel-node-modal"
variant="link" variant="link"
aria-label={i18n._(t`Cancel`)} aria-label={i18n._(t`Cancel`)}

View File

@@ -19,6 +19,7 @@ function NodeNextButton({
return ( return (
<Button <Button
ouiaId="node-modal-next-button"
id="next-node-modal" id="next-node-modal"
variant="primary" variant="primary"
type="submit" type="submit"

View File

@@ -199,6 +199,7 @@ function NodeViewModal({ i18n, readOnly }) {
? [] ? []
: [ : [
<Button <Button
ouiaId="node-view-edit-button"
id="node-view-edit-button" id="node-view-edit-button"
key="edit" key="edit"
aria-label={i18n._(t`Edit Node`)} aria-label={i18n._(t`Edit Node`)}

View File

@@ -16,6 +16,7 @@ function UnsavedChangesModal({ i18n, onSaveAndExit, onExit }) {
onClose={() => dispatch({ type: 'TOGGLE_UNSAVED_CHANGES_MODAL' })} onClose={() => dispatch({ type: 'TOGGLE_UNSAVED_CHANGES_MODAL' })}
actions={[ actions={[
<Button <Button
ouiaId="unsaved-changes-exit-button"
id="confirm-exit-without-saving" id="confirm-exit-without-saving"
key="exit" key="exit"
variant="danger" variant="danger"
@@ -25,6 +26,7 @@ function UnsavedChangesModal({ i18n, onSaveAndExit, onExit }) {
{i18n._(t`Exit Without Saving`)} {i18n._(t`Exit Without Saving`)}
</Button>, </Button>,
<Button <Button
ouiaId="unsaved-changes-save-exit-button"
id="confirm-save-and-exit" id="confirm-save-and-exit"
key="save" key="save"
variant="primary" variant="primary"

Some files were not shown because too many files have changed in this diff Show More