aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main
diff options
context:
space:
mode:
authorWouter Admiraal <wouter.admiraal@sonarsource.com>2021-02-25 15:12:50 +0100
committersonartech <sonartech@sonarsource.com>2021-03-03 20:12:51 +0000
commit6d444973873a2e7a17afcb7442fac809e1fb817f (patch)
tree6418375330f5c38ce15a73235468b5f15d1962f8 /server/sonar-web/src/main
parent68292ece44a35c142bf116db50989c03bc33e522 (diff)
downloadsonarqube-6d444973873a2e7a17afcb7442fac809e1fb817f.tar.gz
sonarqube-6d444973873a2e7a17afcb7442fac809e1fb817f.zip
SONAR-11774 Make issues more accessible to screen readers
Diffstat (limited to 'server/sonar-web/src/main')
-rw-r--r--server/sonar-web/src/main/js/app/styles/init/lists.css3
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx8
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx4
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap2
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/components/issue/IssueView.tsx7
-rw-r--r--server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap6
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx32
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx22
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueChangelog.tsx1
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueCommentAction.tsx6
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.tsx5
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx10
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx17
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx24
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueTransition.tsx22
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueType.tsx21
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/SimilarIssuesFilter.tsx1
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap112
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap6
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueChangelog-test.tsx.snap2
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentAction-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentLine-test.tsx.snap19
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueSeverity-test.tsx.snap4
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap2
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap76
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTransition-test.tsx.snap6
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueType-test.tsx.snap4
29 files changed, 261 insertions, 173 deletions
diff --git a/server/sonar-web/src/main/js/app/styles/init/lists.css b/server/sonar-web/src/main/js/app/styles/init/lists.css
index 332846611e8..7c59ae9a63e 100644
--- a/server/sonar-web/src/main/js/app/styles/init/lists.css
+++ b/server/sonar-web/src/main/js/app/styles/init/lists.css
@@ -46,7 +46,8 @@ ol.list-styled {
list-style: none;
}
-.list-inline > li {
+ul.list-inline > li,
+div.list-inline > div {
display: inline-block;
vertical-align: top;
padding-right: 5px;
diff --git a/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx b/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
index cacfe24b828..0de4e072f38 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/ComponentBreadcrumbs.tsx
@@ -19,6 +19,7 @@
*/
import * as React from 'react';
import QualifierIcon from 'sonar-ui-common/components/icons/QualifierIcon';
+import { translateWithParameters } from 'sonar-ui-common/helpers/l10n';
import { collapsePath, limitComponentName } from 'sonar-ui-common/helpers/path';
import { getSelectedLocation } from '../utils';
@@ -42,7 +43,12 @@ export default function ComponentBreadcrumbs({
const componentName = selectedLocation ? selectedLocation.componentName : issue.componentLongName;
return (
- <div className="component-name text-ellipsis">
+ <div
+ aria-label={translateWithParameters(
+ 'issues.on_file_x',
+ `${displayProject ? issue.projectName + ', ' : ''}${componentName}`
+ )}
+ className="component-name text-ellipsis">
<QualifierIcon className="spacer-right" qualifier={issue.componentQualifier} />
{displayProject && (
diff --git a/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx b/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
index 3f9c71fea3f..783876c7ad3 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/IssuesList.tsx
@@ -70,7 +70,7 @@ export default class IssuesList extends React.PureComponent<Props, State> {
}
return (
- <div>
+ <ul>
{issues.map((issue, index) => (
<ListItem
branchLike={branchLike}
@@ -88,7 +88,7 @@ export default class IssuesList extends React.PureComponent<Props, State> {
selected={selectedIssue != null && selectedIssue.key === issue.key}
/>
))}
- </div>
+ </ul>
);
}
}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx b/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
index 8e388992ce0..ec7b2fb4397 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/ListItem.tsx
@@ -95,7 +95,7 @@ export default class ListItem extends React.PureComponent<Props> {
const displayComponent = !previousIssue || previousIssue.component !== issue.component;
return (
- <div className="issues-workspace-list-item">
+ <li className="issues-workspace-list-item">
{displayComponent && (
<div className="issues-workspace-list-component note">
<ComponentBreadcrumbs component={component} issue={this.props.issue} />
@@ -113,7 +113,7 @@ export default class ListItem extends React.PureComponent<Props> {
openPopup={this.props.openPopup}
selected={this.props.selected}
/>
- </div>
+ </li>
);
}
}
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap
index bc18b11ab3a..3ecf7df7f33 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/ComponentBreadcrumbs-test.tsx.snap
@@ -2,6 +2,7 @@
exports[`renders 1`] = `
<div
+ aria-label="issues.on_file_x.proj-name, comp-name"
className="component-name text-ellipsis"
>
<QualifierIcon
@@ -26,6 +27,7 @@ exports[`renders 1`] = `
exports[`renders with sub-project 1`] = `
<div
+ aria-label="issues.on_file_x.proj-name, comp-name"
className="component-name text-ellipsis"
>
<QualifierIcon
diff --git a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap
index 975eb1fe1cf..7fed2c7faa0 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap
+++ b/server/sonar-web/src/main/js/apps/issues/components/__tests__/__snapshots__/IssuesList-test.tsx.snap
@@ -9,7 +9,7 @@ exports[`should render correctly 1`] = `
`;
exports[`should render correctly 2`] = `
-<div>
+<ul>
<ListItem
checked={false}
issue={
@@ -123,5 +123,5 @@ exports[`should render correctly 2`] = `
}
selected={false}
/>
-</div>
+</ul>
`;
diff --git a/server/sonar-web/src/main/js/components/issue/IssueView.tsx b/server/sonar-web/src/main/js/components/issue/IssueView.tsx
index da13b30550a..98d1d885a66 100644
--- a/server/sonar-web/src/main/js/components/issue/IssueView.tsx
+++ b/server/sonar-web/src/main/js/components/issue/IssueView.tsx
@@ -77,12 +77,7 @@ export default class IssueView extends React.PureComponent<Props> {
});
return (
- <div
- className={issueClass}
- data-issue={issue.key}
- onClick={this.handleClick}
- role="listitem"
- tabIndex={0}>
+ <div className={issueClass} data-issue={issue.key} onClick={this.handleClick} role="group">
<IssueTitleBar
branchLike={this.props.branchLike}
currentPopup={this.props.currentPopup}
diff --git a/server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap
index dfa6de16cee..a8463a07f3d 100644
--- a/server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/__tests__/__snapshots__/IssueView-test.tsx.snap
@@ -5,8 +5,7 @@ exports[`should render hotspots correctly 1`] = `
className="issue hotspot selected"
data-issue="AVsae-CQS-9G3txfbFN2"
onClick={[Function]}
- role="listitem"
- tabIndex={0}
+ role="group"
>
<IssueTitleBar
issue={
@@ -86,8 +85,7 @@ exports[`should render issues correctly 1`] = `
className="issue selected"
data-issue="AVsae-CQS-9G3txfbFN2"
onClick={[Function]}
- role="listitem"
- tabIndex={0}
+ role="group"
>
<IssueTitleBar
issue={
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx
index 9114453f083..2022ebcc0d2 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx
@@ -96,8 +96,8 @@ export default class IssueActionsBar extends React.PureComponent<Props, State> {
return (
<div className="issue-actions">
- <ul className="issue-meta-list">
- <li className="issue-meta">
+ <div className="issue-meta-list">
+ <div className="issue-meta">
<IssueType
canSetType={canSetType}
isOpen={this.props.currentPopup === 'set-type' && canSetType}
@@ -105,9 +105,9 @@ export default class IssueActionsBar extends React.PureComponent<Props, State> {
setIssueProperty={this.setIssueProperty}
togglePopup={this.props.togglePopup}
/>
- </li>
+ </div>
{!isSecurityHotspot && (
- <li className="issue-meta">
+ <div className="issue-meta">
<IssueSeverity
canSetSeverity={canSetSeverity}
isOpen={this.props.currentPopup === 'set-severity' && canSetSeverity}
@@ -115,9 +115,9 @@ export default class IssueActionsBar extends React.PureComponent<Props, State> {
setIssueProperty={this.setIssueProperty}
togglePopup={this.props.togglePopup}
/>
- </li>
+ </div>
)}
- <li className="issue-meta">
+ <div className="issue-meta">
<IssueTransition
hasTransitions={hasTransitions}
isOpen={this.props.currentPopup === 'transition' && hasTransitions}
@@ -125,8 +125,8 @@ export default class IssueActionsBar extends React.PureComponent<Props, State> {
onChange={this.handleTransition}
togglePopup={this.props.togglePopup}
/>
- </li>
- <li className="issue-meta">
+ </div>
+ <div className="issue-meta">
<IssueAssign
canAssign={canAssign}
isOpen={this.props.currentPopup === 'assign' && canAssign}
@@ -134,13 +134,13 @@ export default class IssueActionsBar extends React.PureComponent<Props, State> {
onAssign={this.props.onAssign}
togglePopup={this.props.togglePopup}
/>
- </li>
+ </div>
{!isSecurityHotspot && issue.effort && (
- <li className="issue-meta">
+ <div className="issue-meta">
<span className="issue-meta-label">
{translateWithParameters('issue.x_effort', issue.effort)}
</span>
- </li>
+ </div>
)}
{canComment && (
<IssueCommentAction
@@ -152,9 +152,9 @@ export default class IssueActionsBar extends React.PureComponent<Props, State> {
toggleComment={this.toggleComment}
/>
)}
- </ul>
- <ul className="list-inline">
- <li className="issue-meta js-issue-tags">
+ </div>
+ <div className="list-inline">
+ <div className="issue-meta js-issue-tags">
<IssueTags
canSetTags={canSetTags}
isOpen={this.props.currentPopup === 'edit-tags' && canSetTags}
@@ -162,8 +162,8 @@ export default class IssueActionsBar extends React.PureComponent<Props, State> {
onChange={this.props.onChange}
togglePopup={this.props.togglePopup}
/>
- </li>
- </ul>
+ </div>
+ </div>
</div>
);
}
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx
index 102a7938c45..afc63537aab 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx
@@ -53,7 +53,7 @@ export default class IssueAssign extends React.PureComponent<Props> {
<Avatar
className="little-spacer-right"
hash={issue.assigneeAvatar}
- name={issue.assigneeName || issue.assignee}
+ name={assigneeName}
size={16}
/>
</span>
@@ -70,15 +70,27 @@ export default class IssueAssign extends React.PureComponent<Props> {
}
render() {
- if (this.props.canAssign) {
+ const { canAssign, isOpen, issue } = this.props;
+ const assigneeName = issue.assigneeName || issue.assignee;
+
+ if (canAssign) {
return (
<div className="dropdown">
<Toggler
closeOnEscape={true}
onRequestClose={this.handleClose}
- open={this.props.isOpen && this.props.canAssign}
+ open={isOpen}
overlay={<SetAssigneePopup onSelect={this.props.onAssign} />}>
<ButtonLink
+ aria-expanded={isOpen}
+ aria-label={
+ assigneeName
+ ? translateWithParameters(
+ 'issue.assign.assigned_to_x_click_to_change',
+ assigneeName
+ )
+ : translate('issue.assign.unassigned_click_to_assign')
+ }
className="issue-action issue-action-with-options js-issue-assign"
onClick={this.toggleAssign}>
{this.renderAssignee()}
@@ -87,8 +99,8 @@ export default class IssueAssign extends React.PureComponent<Props> {
</Toggler>
</div>
);
- } else {
- return this.renderAssignee();
}
+
+ return this.renderAssignee();
}
}
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueChangelog.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueChangelog.tsx
index 3153896e929..15261cc7e77 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueChangelog.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueChangelog.tsx
@@ -52,6 +52,7 @@ export default class IssueChangelog extends React.PureComponent<Props> {
open={this.props.isOpen}
overlay={<ChangelogPopup issue={this.props.issue} />}>
<ButtonLink
+ aria-expanded={this.props.isOpen}
className="issue-action issue-action-with-options js-issue-show-changelog"
onClick={this.handleClick}>
<span className="issue-meta-label">
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueCommentAction.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueCommentAction.tsx
index 15ecb7b78b8..d5826942b9c 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueCommentAction.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueCommentAction.tsx
@@ -63,7 +63,11 @@ export default class IssueCommentAction extends React.PureComponent<Props> {
toggleComment={this.props.toggleComment}
/>
}>
- <ButtonLink className="issue-action js-issue-comment" onClick={this.handleCommentClick}>
+ <ButtonLink
+ aria-expanded={this.props.currentPopup === 'comment'}
+ aria-label={translate('issue.comment.add_comment')}
+ className="issue-action js-issue-comment"
+ onClick={this.handleCommentClick}>
<span className="issue-meta-label">{translate('issue.comment.formlink')}</span>
</ButtonLink>
</Toggler>
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.tsx
index 2efd3583e1a..84a617ccd88 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.tsx
@@ -23,7 +23,7 @@ import { DeleteButton, EditButton } from 'sonar-ui-common/components/controls/bu
import Toggler from 'sonar-ui-common/components/controls/Toggler';
import DateFromNow from 'sonar-ui-common/components/intl/DateFromNow';
import { PopupPlacement } from 'sonar-ui-common/components/ui/popups';
-import { translateWithParameters } from 'sonar-ui-common/helpers/l10n';
+import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n';
import Avatar from '../../ui/Avatar';
import CommentDeletePopup from '../popups/CommentDeletePopup';
import CommentPopup from '../popups/CommentPopup';
@@ -99,6 +99,7 @@ export default class IssueCommentLine extends React.PureComponent<Props, State>
dangerouslySetInnerHTML={{ __html: sanitize(comment.htmlText) }}
/>
<div className="issue-comment-age">
+ <span className="a11y-hidden">{translate('issue.comment.posted_on')}</span>
<DateFromNow date={comment.createdAt} />
</div>
<div className="issue-comment-actions">
@@ -118,6 +119,7 @@ export default class IssueCommentLine extends React.PureComponent<Props, State>
/>
}>
<EditButton
+ aria-label={translate('issue.comment.edit')}
className="js-issue-comment-edit button-small"
onClick={this.toggleEditPopup}
/>
@@ -131,6 +133,7 @@ export default class IssueCommentLine extends React.PureComponent<Props, State>
open={this.state.openPopup === 'delete'}
overlay={<CommentDeletePopup onDelete={this.handleDelete} />}>
<DeleteButton
+ aria-label={translate('issue.comment.delete')}
className="js-issue-comment-delete button-small"
onClick={this.toggleDeletePopup}
/>
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx
index 547c4e74bfb..c6996fd066c 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueSeverity.tsx
@@ -21,6 +21,7 @@ import * as React from 'react';
import { ButtonLink } from 'sonar-ui-common/components/controls/buttons';
import Toggler from 'sonar-ui-common/components/controls/Toggler';
import DropdownIcon from 'sonar-ui-common/components/icons/DropdownIcon';
+import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n';
import { setIssueSeverity } from '../../../api/issues';
import { IssueResponse } from '../../../types/issues';
import SeverityHelper from '../../shared/SeverityHelper';
@@ -62,6 +63,11 @@ export default class IssueSeverity extends React.PureComponent<Props> {
open={this.props.isOpen && this.props.canSetSeverity}
overlay={<SetSeverityPopup issue={issue} onSelect={this.setSeverity} />}>
<ButtonLink
+ aria-label={translateWithParameters(
+ 'issue.severity.severity_x_click_to_change',
+ translate('severity', issue.severity)
+ )}
+ aria-expanded={this.props.isOpen}
className="issue-action issue-action-with-options js-issue-set-severity"
onClick={this.toggleSetSeverity}>
<SeverityHelper className="issue-meta-label" severity={issue.severity} />
@@ -70,8 +76,8 @@ export default class IssueSeverity extends React.PureComponent<Props> {
</Toggler>
</div>
);
- } else {
- return <SeverityHelper className="issue-meta-label" severity={issue.severity} />;
}
+
+ return <SeverityHelper className="issue-meta-label" severity={issue.severity} />;
}
}
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx
index 5def1b1f573..553bb8c6e80 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx
@@ -66,6 +66,7 @@ export default class IssueTags extends React.PureComponent<Props> {
open={this.props.isOpen}
overlay={<SetIssueTagsPopup selectedTags={tags} setTags={this.setTags} />}>
<ButtonLink
+ aria-expanded={this.props.isOpen}
className="issue-action issue-action-with-options js-issue-edit-tags"
onClick={this.toggleSetTags}>
<TagsList
@@ -78,14 +79,14 @@ export default class IssueTags extends React.PureComponent<Props> {
</Toggler>
</div>
);
- } else {
- return (
- <TagsList
- allowUpdate={this.props.canSetTags}
- className="note"
- tags={issue.tags && issue.tags.length > 0 ? issue.tags : [translate('issue.no_tag')]}
- />
- );
}
+
+ return (
+ <TagsList
+ allowUpdate={this.props.canSetTags}
+ className="note"
+ tags={issue.tags && issue.tags.length > 0 ? issue.tags : [translate('issue.no_tag')]}
+ />
+ );
}
}
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx
index fa867df4309..1b82ac169b2 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueTitleBar.tsx
@@ -91,24 +91,24 @@ export default function IssueTitleBar(props: IssueTitleBarProps) {
</WorkspaceContext.Consumer>
<div className="issue-row-meta">
- <ul className="issue-meta-list">
- <li className="issue-meta">
+ <div className="issue-meta-list">
+ <div className="issue-meta">
<IssueChangelog
creationDate={issue.creationDate}
isOpen={props.currentPopup === 'changelog'}
issue={issue}
togglePopup={props.togglePopup}
/>
- </li>
+ </div>
{issue.textRange != null && (
- <li className="issue-meta">
+ <div className="issue-meta">
<span className="issue-meta-label" title={translate('line_number')}>
L{issue.textRange.endLine}
</span>
- </li>
+ </div>
)}
{displayLocations && (
- <li className="issue-meta">
+ <div className="issue-meta">
{props.displayLocationsLink ? (
<Link target="_blank" to={issueUrl}>
{locationsBadge}
@@ -116,9 +116,9 @@ export default function IssueTitleBar(props: IssueTitleBarProps) {
) : (
locationsBadge
)}
- </li>
+ </div>
)}
- <li className="issue-meta">
+ <div className="issue-meta">
<Link
className="js-issue-permalink link-no-underline"
target="_blank"
@@ -126,18 +126,18 @@ export default function IssueTitleBar(props: IssueTitleBarProps) {
to={issueUrl}>
<LinkIcon />
</Link>
- </li>
+ </div>
{hasSimilarIssuesFilter && (
- <li className="issue-meta">
+ <div className="issue-meta">
<SimilarIssuesFilter
isOpen={props.currentPopup === 'similarIssues'}
issue={issue}
onFilter={props.onFilter}
togglePopup={props.togglePopup}
/>
- </li>
+ </div>
)}
- </ul>
+ </div>
</div>
</div>
);
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueTransition.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueTransition.tsx
index e0e11f20ada..419eaa2b92d 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueTransition.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueTransition.tsx
@@ -21,6 +21,7 @@ import * as React from 'react';
import { ButtonLink } from 'sonar-ui-common/components/controls/buttons';
import Toggler from 'sonar-ui-common/components/controls/Toggler';
import DropdownIcon from 'sonar-ui-common/components/icons/DropdownIcon';
+import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n';
import { setIssueTransition } from '../../../api/issues';
import StatusHelper from '../../shared/StatusHelper';
import { updateIssue } from '../actions';
@@ -69,6 +70,11 @@ export default class IssueTransition extends React.PureComponent<Props> {
/>
}>
<ButtonLink
+ aria-label={translateWithParameters(
+ 'issue.transition.status_x_click_to_change',
+ translate('issue.status', issue.status)
+ )}
+ aria-expanded={this.props.isOpen}
className="issue-action issue-action-with-options js-issue-transition"
onClick={this.toggleSetTransition}>
<StatusHelper
@@ -81,14 +87,14 @@ export default class IssueTransition extends React.PureComponent<Props> {
</Toggler>
</div>
);
- } else {
- return (
- <StatusHelper
- className="issue-meta-label"
- resolution={issue.resolution}
- status={issue.status}
- />
- );
}
+
+ return (
+ <StatusHelper
+ className="issue-meta-label"
+ resolution={issue.resolution}
+ status={issue.status}
+ />
+ );
}
}
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueType.tsx b/server/sonar-web/src/main/js/components/issue/components/IssueType.tsx
index 0b1f85ed357..d2d4871f289 100644
--- a/server/sonar-web/src/main/js/components/issue/components/IssueType.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/IssueType.tsx
@@ -22,7 +22,7 @@ import { ButtonLink } from 'sonar-ui-common/components/controls/buttons';
import Toggler from 'sonar-ui-common/components/controls/Toggler';
import DropdownIcon from 'sonar-ui-common/components/icons/DropdownIcon';
import IssueTypeIcon from 'sonar-ui-common/components/icons/IssueTypeIcon';
-import { translate } from 'sonar-ui-common/helpers/l10n';
+import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n';
import { setIssueType } from '../../../api/issues';
import { colors } from '../../../app/theme';
import { IssueResponse } from '../../../types/issues';
@@ -64,6 +64,11 @@ export default class IssueType extends React.PureComponent<Props> {
open={this.props.isOpen && this.props.canSetType}
overlay={<SetTypePopup issue={issue} onSelect={this.setType} />}>
<ButtonLink
+ aria-label={translateWithParameters(
+ 'issue.type.type_x_click_to_change',
+ translate('issue.type', issue.type)
+ )}
+ aria-expanded={this.props.isOpen}
className="issue-action issue-action-with-options js-issue-set-type"
onClick={this.toggleSetType}>
<IssueTypeIcon
@@ -77,13 +82,13 @@ export default class IssueType extends React.PureComponent<Props> {
</Toggler>
</div>
);
- } else {
- return (
- <span>
- <IssueTypeIcon className="little-spacer-right" query={issue.type} />
- {translate('issue.type', issue.type)}
- </span>
- );
}
+
+ return (
+ <span>
+ <IssueTypeIcon className="little-spacer-right" query={issue.type} />
+ {translate('issue.type', issue.type)}
+ </span>
+ );
}
}
diff --git a/server/sonar-web/src/main/js/components/issue/components/SimilarIssuesFilter.tsx b/server/sonar-web/src/main/js/components/issue/components/SimilarIssuesFilter.tsx
index b4234c3bdef..3292efc5f68 100644
--- a/server/sonar-web/src/main/js/components/issue/components/SimilarIssuesFilter.tsx
+++ b/server/sonar-web/src/main/js/components/issue/components/SimilarIssuesFilter.tsx
@@ -57,6 +57,7 @@ export default class SimilarIssuesFilter extends React.PureComponent<Props> {
overlay={<SimilarIssuesPopup issue={this.props.issue} onFilter={this.handleFilter} />}>
<ButtonLink
aria-label={translate('issue.filter_similar_issues')}
+ aria-expanded={this.props.isOpen}
className="issue-action issue-action-with-options js-issue-filter"
onClick={this.togglePopup}
title={translate('issue.filter_similar_issues')}>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap
index a63ade64730..574359b316b 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueActionsBar-test.tsx.snap
@@ -4,10 +4,10 @@ exports[`should render commentable correctly 1`] = `
<div
className="issue-actions"
>
- <ul
+ <div
className="issue-meta-list"
>
- <li
+ <div
className="issue-meta"
>
<IssueType
@@ -49,8 +49,8 @@ exports[`should render commentable correctly 1`] = `
setIssueProperty={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueSeverity
@@ -92,8 +92,8 @@ exports[`should render commentable correctly 1`] = `
setIssueProperty={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueTransition
@@ -135,8 +135,8 @@ exports[`should render commentable correctly 1`] = `
onChange={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueAssign
@@ -178,7 +178,7 @@ exports[`should render commentable correctly 1`] = `
onAssign={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
+ </div>
<IssueCommentAction
commentAutoTriggered={false}
commentPlaceholder=""
@@ -186,11 +186,11 @@ exports[`should render commentable correctly 1`] = `
onChange={[MockFunction]}
toggleComment={[Function]}
/>
- </ul>
- <ul
+ </div>
+ <div
className="list-inline"
>
- <li
+ <div
className="issue-meta js-issue-tags"
>
<IssueTags
@@ -232,8 +232,8 @@ exports[`should render commentable correctly 1`] = `
onChange={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
- </ul>
+ </div>
+ </div>
</div>
`;
@@ -241,10 +241,10 @@ exports[`should render effort correctly 1`] = `
<div
className="issue-actions"
>
- <ul
+ <div
className="issue-meta-list"
>
- <li
+ <div
className="issue-meta"
>
<IssueType
@@ -285,8 +285,8 @@ exports[`should render effort correctly 1`] = `
setIssueProperty={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueSeverity
@@ -327,8 +327,8 @@ exports[`should render effort correctly 1`] = `
setIssueProperty={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueTransition
@@ -369,8 +369,8 @@ exports[`should render effort correctly 1`] = `
onChange={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueAssign
@@ -411,8 +411,8 @@ exports[`should render effort correctly 1`] = `
onAssign={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<span
@@ -420,12 +420,12 @@ exports[`should render effort correctly 1`] = `
>
issue.x_effort.great
</span>
- </li>
- </ul>
- <ul
+ </div>
+ </div>
+ <div
className="list-inline"
>
- <li
+ <div
className="issue-meta js-issue-tags"
>
<IssueTags
@@ -466,8 +466,8 @@ exports[`should render effort correctly 1`] = `
onChange={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
- </ul>
+ </div>
+ </div>
</div>
`;
@@ -475,10 +475,10 @@ exports[`should render issue correctly 1`] = `
<div
className="issue-actions"
>
- <ul
+ <div
className="issue-meta-list"
>
- <li
+ <div
className="issue-meta"
>
<IssueType
@@ -518,8 +518,8 @@ exports[`should render issue correctly 1`] = `
setIssueProperty={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueSeverity
@@ -559,8 +559,8 @@ exports[`should render issue correctly 1`] = `
setIssueProperty={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueTransition
@@ -600,8 +600,8 @@ exports[`should render issue correctly 1`] = `
onChange={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueAssign
@@ -641,12 +641,12 @@ exports[`should render issue correctly 1`] = `
onAssign={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
- </ul>
- <ul
+ </div>
+ </div>
+ <div
className="list-inline"
>
- <li
+ <div
className="issue-meta js-issue-tags"
>
<IssueTags
@@ -686,8 +686,8 @@ exports[`should render issue correctly 1`] = `
onChange={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
- </ul>
+ </div>
+ </div>
</div>
`;
@@ -695,10 +695,10 @@ exports[`should render security hotspot correctly 1`] = `
<div
className="issue-actions"
>
- <ul
+ <div
className="issue-meta-list"
>
- <li
+ <div
className="issue-meta"
>
<IssueType
@@ -738,8 +738,8 @@ exports[`should render security hotspot correctly 1`] = `
setIssueProperty={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueTransition
@@ -779,8 +779,8 @@ exports[`should render security hotspot correctly 1`] = `
onChange={[Function]}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<IssueAssign
@@ -820,12 +820,12 @@ exports[`should render security hotspot correctly 1`] = `
onAssign={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
- </ul>
- <ul
+ </div>
+ </div>
+ <div
className="list-inline"
>
- <li
+ <div
className="issue-meta js-issue-tags"
>
<IssueTags
@@ -865,7 +865,7 @@ exports[`should render security hotspot correctly 1`] = `
onChange={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
- </ul>
+ </div>
+ </div>
</div>
`;
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap
index 7f3fc48c7c2..8496a984f30 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueAssign-test.tsx.snap
@@ -24,6 +24,8 @@ exports[`should open the popup when the button is clicked 2`] = `
}
>
<ButtonLink
+ aria-expanded={true}
+ aria-label="issue.assign.assigned_to_x_click_to_change.John Doe"
className="issue-action issue-action-with-options js-issue-assign"
onClick={[Function]}
>
@@ -65,6 +67,8 @@ exports[`should render a fallback assignee display if assignee info are not avai
}
>
<ButtonLink
+ aria-expanded={false}
+ aria-label="issue.assign.unassigned_click_to_assign"
className="issue-action issue-action-with-options js-issue-assign"
onClick={[Function]}
>
@@ -96,6 +100,8 @@ exports[`should render with the action 1`] = `
}
>
<ButtonLink
+ aria-expanded={false}
+ aria-label="issue.assign.assigned_to_x_click_to_change.John Doe"
className="issue-action issue-action-with-options js-issue-assign"
onClick={[Function]}
>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueChangelog-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueChangelog-test.tsx.snap
index 774bd2669b7..dc6ab37ef51 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueChangelog-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueChangelog-test.tsx.snap
@@ -29,6 +29,7 @@ exports[`should open the popup when the button is clicked 2`] = `
}
>
<ButtonLink
+ aria-expanded={true}
className="issue-action issue-action-with-options js-issue-show-changelog"
onClick={[Function]}
>
@@ -67,6 +68,7 @@ exports[`should render correctly 1`] = `
}
>
<ButtonLink
+ aria-expanded={false}
className="issue-action issue-action-with-options js-issue-show-changelog"
onClick={[Function]}
>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentAction-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentAction-test.tsx.snap
index dfb462c293f..b83e932d61f 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentAction-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentAction-test.tsx.snap
@@ -29,6 +29,8 @@ exports[`should open the popup when the button is clicked 1`] = `
}
>
<ButtonLink
+ aria-expanded={true}
+ aria-label="issue.comment.add_comment"
className="issue-action js-issue-comment"
onClick={[Function]}
>
@@ -59,6 +61,8 @@ exports[`should render correctly 1`] = `
}
>
<ButtonLink
+ aria-expanded={false}
+ aria-label="issue.comment.add_comment"
className="issue-action js-issue-comment"
onClick={[Function]}
>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentLine-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentLine-test.tsx.snap
index 1f5b5388ac9..1a6849c827e 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentLine-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueCommentLine-test.tsx.snap
@@ -39,6 +39,11 @@ exports[`should open the right popups when the buttons are clicked 3`] = `
<div
className="issue-comment-age"
>
+ <span
+ className="a11y-hidden"
+ >
+ issue.comment.posted_on
+ </span>
<DateFromNow
date="2017-03-01T09:36:01+0100"
/>
@@ -76,6 +81,7 @@ exports[`should open the right popups when the buttons are clicked 3`] = `
}
>
<EditButton
+ aria-label="issue.comment.edit"
className="js-issue-comment-edit button-small"
onClick={[Function]}
/>
@@ -94,6 +100,7 @@ exports[`should open the right popups when the buttons are clicked 3`] = `
}
>
<DeleteButton
+ aria-label="issue.comment.delete"
className="js-issue-comment-delete button-small"
onClick={[Function]}
/>
@@ -130,6 +137,11 @@ exports[`should render correctly a comment that is not updatable 1`] = `
<div
className="issue-comment-age"
>
+ <span
+ className="a11y-hidden"
+ >
+ issue.comment.posted_on
+ </span>
<DateFromNow
date="2017-03-01T09:36:01+0100"
/>
@@ -167,6 +179,11 @@ exports[`should render correctly a comment that is updatable 1`] = `
<div
className="issue-comment-age"
>
+ <span
+ className="a11y-hidden"
+ >
+ issue.comment.posted_on
+ </span>
<DateFromNow
date="2017-03-01T09:36:01+0100"
/>
@@ -204,6 +221,7 @@ exports[`should render correctly a comment that is updatable 1`] = `
}
>
<EditButton
+ aria-label="issue.comment.edit"
className="js-issue-comment-edit button-small"
onClick={[Function]}
/>
@@ -222,6 +240,7 @@ exports[`should render correctly a comment that is updatable 1`] = `
}
>
<DeleteButton
+ aria-label="issue.comment.delete"
className="js-issue-comment-delete button-small"
onClick={[Function]}
/>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueSeverity-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueSeverity-test.tsx.snap
index 666c4bb4d47..5d530bc6794 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueSeverity-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueSeverity-test.tsx.snap
@@ -28,6 +28,8 @@ exports[`should open the popup when the button is clicked 2`] = `
}
>
<ButtonLink
+ aria-expanded={true}
+ aria-label="issue.severity.severity_x_click_to_change.severity.BLOCKER"
className="issue-action issue-action-with-options js-issue-set-severity"
onClick={[Function]}
>
@@ -62,6 +64,8 @@ exports[`should render with the action 1`] = `
}
>
<ButtonLink
+ aria-expanded={false}
+ aria-label="issue.severity.severity_x_click_to_change.severity.BLOCKER"
className="issue-action issue-action-with-options js-issue-set-severity"
onClick={[Function]}
>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap
index 001d1d6908f..106169cb019 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTags-test.tsx.snap
@@ -29,6 +29,7 @@ exports[`should open the popup when the button is clicked 2`] = `
}
>
<ButtonLink
+ aria-expanded={true}
className="issue-action issue-action-with-options js-issue-edit-tags"
onClick={[Function]}
>
@@ -66,6 +67,7 @@ exports[`should render with the action 1`] = `
}
>
<ButtonLink
+ aria-expanded={false}
className="issue-action issue-action-with-options js-issue-edit-tags"
onClick={[Function]}
>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap
index 2e401f7f8bd..3301b5c3763 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTitleBar-test.tsx.snap
@@ -10,10 +10,10 @@ exports[`should render correctly: default 1`] = `
<div
className="issue-row-meta"
>
- <ul
+ <div
className="issue-meta-list"
>
- <li
+ <div
className="issue-meta"
>
<IssueChangelog
@@ -53,8 +53,8 @@ exports[`should render correctly: default 1`] = `
}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<span
@@ -64,8 +64,8 @@ exports[`should render correctly: default 1`] = `
L
26
</span>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<Link
@@ -88,8 +88,8 @@ exports[`should render correctly: default 1`] = `
>
<LinkIcon />
</Link>
- </li>
- </ul>
+ </div>
+ </div>
</div>
</div>
`;
@@ -114,10 +114,10 @@ exports[`should render correctly: with filter 1`] = `
<div
className="issue-row-meta"
>
- <ul
+ <div
className="issue-meta-list"
>
- <li
+ <div
className="issue-meta"
>
<IssueChangelog
@@ -157,8 +157,8 @@ exports[`should render correctly: with filter 1`] = `
}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<span
@@ -168,8 +168,8 @@ exports[`should render correctly: with filter 1`] = `
L
26
</span>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<Link
@@ -192,8 +192,8 @@ exports[`should render correctly: with filter 1`] = `
>
<LinkIcon />
</Link>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<SimilarIssuesFilter
@@ -233,8 +233,8 @@ exports[`should render correctly: with filter 1`] = `
onFilter={[MockFunction]}
togglePopup={[MockFunction]}
/>
- </li>
- </ul>
+ </div>
+ </div>
</div>
</div>
`;
@@ -249,10 +249,10 @@ exports[`should render correctly: with multi locations 1`] = `
<div
className="issue-row-meta"
>
- <ul
+ <div
className="issue-meta-list"
>
- <li
+ <div
className="issue-meta"
>
<IssueChangelog
@@ -360,8 +360,8 @@ exports[`should render correctly: with multi locations 1`] = `
}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<span
@@ -371,8 +371,8 @@ exports[`should render correctly: with multi locations 1`] = `
L
26
</span>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<Tooltip
@@ -382,8 +382,8 @@ exports[`should render correctly: with multi locations 1`] = `
7
</LocationIndex>
</Tooltip>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<Link
@@ -406,8 +406,8 @@ exports[`should render correctly: with multi locations 1`] = `
>
<LinkIcon />
</Link>
- </li>
- </ul>
+ </div>
+ </div>
</div>
</div>
`;
@@ -422,10 +422,10 @@ exports[`should render correctly: with multi locations and link 1`] = `
<div
className="issue-row-meta"
>
- <ul
+ <div
className="issue-meta-list"
>
- <li
+ <div
className="issue-meta"
>
<IssueChangelog
@@ -533,8 +533,8 @@ exports[`should render correctly: with multi locations and link 1`] = `
}
togglePopup={[MockFunction]}
/>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<span
@@ -544,8 +544,8 @@ exports[`should render correctly: with multi locations and link 1`] = `
L
26
</span>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<Link
@@ -573,8 +573,8 @@ exports[`should render correctly: with multi locations and link 1`] = `
</LocationIndex>
</Tooltip>
</Link>
- </li>
- <li
+ </div>
+ <div
className="issue-meta"
>
<Link
@@ -598,8 +598,8 @@ exports[`should render correctly: with multi locations and link 1`] = `
>
<LinkIcon />
</Link>
- </li>
- </ul>
+ </div>
+ </div>
</div>
</div>
`;
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTransition-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTransition-test.tsx.snap
index e17d30f0a59..d3d54e58071 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTransition-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueTransition-test.tsx.snap
@@ -33,6 +33,8 @@ exports[`should open the popup when the button is clicked 2`] = `
}
>
<ButtonLink
+ aria-expanded={true}
+ aria-label="issue.transition.status_x_click_to_change.issue.status.OPEN"
className="issue-action issue-action-with-options js-issue-transition"
onClick={[Function]}
>
@@ -69,6 +71,8 @@ exports[`should render with a resolution 1`] = `
}
>
<ButtonLink
+ aria-expanded={false}
+ aria-label="issue.transition.status_x_click_to_change.issue.status.RESOLVED"
className="issue-action issue-action-with-options js-issue-transition"
onClick={[Function]}
>
@@ -109,6 +113,8 @@ exports[`should render with the action 1`] = `
}
>
<ButtonLink
+ aria-expanded={false}
+ aria-label="issue.transition.status_x_click_to_change.issue.status.OPEN"
className="issue-action issue-action-with-options js-issue-transition"
onClick={[Function]}
>
diff --git a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueType-test.tsx.snap b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueType-test.tsx.snap
index 27fc50ed882..b07ade8d1fd 100644
--- a/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueType-test.tsx.snap
+++ b/server/sonar-web/src/main/js/components/issue/components/__tests__/__snapshots__/IssueType-test.tsx.snap
@@ -28,6 +28,8 @@ exports[`should open the popup when the button is clicked 2`] = `
}
>
<ButtonLink
+ aria-expanded={true}
+ aria-label="issue.type.type_x_click_to_change.issue.type.BUG"
className="issue-action issue-action-with-options js-issue-set-type"
onClick={[Function]}
>
@@ -64,6 +66,8 @@ exports[`should render with the action 1`] = `
}
>
<ButtonLink
+ aria-expanded={false}
+ aria-label="issue.type.type_x_click_to_change.issue.type.BUG"
className="issue-action issue-action-with-options js-issue-set-type"
onClick={[Function]}
>