Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
bb7b755
feat: Refactor user state access and add Navigation component with he…
d-beezee Apr 22, 2025
7ab70da
test(mock): add delete plan mock and update related tests
iacopolea Apr 23, 2025
305d6c6
test(mock): add mockPatchPlan method and update related tests for PAT…
iacopolea Apr 24, 2025
4a458fc
fix(translation): Update "View all" text to "View more" for clarity
Kariamos May 6, 2025
87a5fc5
feat(plans): update button text to show remaining items count
Kariamos May 6, 2025
7f70a1f
rework: Use accordion new in observations
d-beezee May 6, 2025
5c20346
rework: Use accordionnew in prj invite
d-beezee May 6, 2025
a6c7376
rework: Replace StyledAccordion with AccordionNew in campaign settings
d-beezee May 6, 2025
0238af0
style(project-items): update marginTop to use appTheme spacing
Kariamos May 6, 2025
4356228
feat: Enhance accessibility and error handling in modals and task man…
iacopolea May 6, 2025
b2ef6c6
Refactor plan module tests to use dedicated module classes for better…
iacopolea May 7, 2025
ca17c96
feat(project): Add delete project modal and integrate with project he…
iDome89 May 8, 2025
ecb7cb3
Merge pull request #1310 from AppQuality/UN-1343-accordion
d-beezee May 8, 2025
a2efc8f
feat: Update plan module components to enable/disable inputs based on…
iacopolea May 8, 2025
823f56c
chore: Remove unused import from GenderModule and LanguageModule
iacopolea May 8, 2025
9fc54e7
feat: Update E2E tests and modules for improved structure and readabi…
iacopolea May 8, 2025
67383ec
rework: Add NotUniqueBugs component and update CampaignOverview logic…
marcbon May 8, 2025
56ff024
rework: Rename NotUniqueBugs to OnlyUniqueBugs and update CampaignOve…
marcbon May 8, 2025
f68ed0d
feat: Update promo banners
d-beezee May 8, 2025
0dfc4ea
feat: add delete project functionality with confirmation modal
iDome89 May 9, 2025
4375771
fix(schema): remove unknown requestBody type from operations interface
iDome89 May 9, 2025
17e21a8
feat: Add data-qa attribute to invite users button and update visibil…
iacopolea May 9, 2025
30776d2
rework: Add OnlyUniqueBugs widget and update CampaignOverview to util…
d-beezee May 12, 2025
d36bdd1
feat: Add UniqueBugsByAdditional widget and integrate additional fiel…
d-beezee May 12, 2025
bdceeaa
feat: Enhance UniqueBugsByAdditional widget with additional fields an…
d-beezee May 12, 2025
c837c73
feat: Add OnlyUniqueBugs widget with tooltip and SVG image
d-beezee May 12, 2025
b8b96dc
Update src/pages/Campaign/useWidgets/Functional/widgets/UniqueBugsByA…
d-beezee May 12, 2025
35303ef
rework: Simplify banner CTA and update translations for suggestions
d-beezee May 12, 2025
9532182
feat: Add accessibility task
d-beezee May 12, 2025
d0755fe
feat: Update promo svg
d-beezee May 13, 2025
9d5043c
fix: Remove double invitation
d-beezee May 13, 2025
6e19bd6
Merge pull request #1318 from AppQuality/UN-1388
d-beezee May 13, 2025
cd72959
Merge pull request #1317 from AppQuality/UN-1338
d-beezee May 13, 2025
5180df5
fix: Update Tooltip padding in UniqueBugsByAdditional Chart component
d-beezee May 13, 2025
9f55292
fix: Correct item slicing logic in useMaxItems to utilize sorted items
d-beezee May 13, 2025
55e43f6
feat: Optimize useBugsByAdditional hook with useMemo for improved per…
d-beezee May 13, 2025
e7abc7c
Merge pull request #1312 from AppQuality/UN-1354-not-unique-bugs-widget
d-beezee May 13, 2025
0b86cec
fix: Adjust opacity and colors in OnlyUniqueBugs SVG for better visib…
d-beezee May 13, 2025
40f758b
fix: Update children property in useBugsByAdditional to reflect corre…
d-beezee May 13, 2025
8a7e66f
feat: Integrate TrendPill component into UniqueBugs and OnlyUniqueBug…
d-beezee May 13, 2025
1797d1f
fix: Update height of UniqueBugsByAdditional component for improved l…
d-beezee May 13, 2025
ff41a15
fix: Update OnlyUniqueBugs SVG dimensions
d-beezee May 14, 2025
8e6aa07
fix: Move BugDetails component to correct position in BugPreview and …
d-beezee May 14, 2025
5625532
refactor(tools): fixed import
Kariamos May 15, 2025
82b0a54
refactor(pages): reorder imports in PageHeader and Metas components
Kariamos May 15, 2025
3c9a9e1
Merge pull request #1309 from AppQuality/fix-plans-view-more-behaviour
d-beezee May 15, 2025
c8285b9
Refactor API endpoint for deleting projects by removing body paramete…
iDome89 May 15, 2025
c074c4c
feat: implement confirmation modal for project deletion
iDome89 May 15, 2025
e1e4a05
Merge pull request #1319 from AppQuality/UN-1383
d-beezee May 15, 2025
bcc4475
Merge pull request #1316 from AppQuality/UN-1185
d-beezee May 15, 2025
20e1f2b
refactor: Update Navigation component to use memoization for paramete…
d-beezee May 15, 2025
03972dd
Merge pull request #1301 from AppQuality/reduce-rerenders
d-beezee May 15, 2025
57a3b68
Merge pull request #1313 from AppQuality/UN-1267
d-beezee May 15, 2025
9788a95
Merge pull request #1315 from AppQuality/UN-1357-hide-invite-users
d-beezee May 15, 2025
efd3efd
Merge pull request #1311 from AppQuality/UN-1186-bis
d-beezee May 15, 2025
63e5b8a
Merge branch 'develop' into UN-1186
d-beezee May 15, 2025
530f1b5
Merge pull request #1302 from AppQuality/UN-1186
d-beezee May 15, 2025
2b986de
fix(translation): added line breaks to the project deletion modal mes…
Kariamos May 16, 2025
cae2b7f
style(DashboardHeader): improve layout of buttons in header content
Kariamos May 16, 2025
63a527f
style(ProjectPageHeader): add gap to StyledDiv for improved Project h…
Kariamos May 16, 2025
493dd08
refactor(DeleteProjectModal): simplify translation component usage
Kariamos May 16, 2025
0c61864
Merge pull request #1321 from AppQuality/fix-delete-project
iDome89 May 19, 2025
23b7298
Merge branch 'master' into develop
d-beezee May 19, 2025
57bc628
style(ProjectPageHeader): conditionally render delete icon based on p…
d-beezee May 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ jobs:
strategy:
fail-fast: false
matrix:
# run 3 copies of the job in parallel
shard: [1, 2, 3]
# run 4 copies of the job in parallel
shard: [1, 2, 3, 4]

name: "Playwright Tests - pwc"
timeout-minutes: 20
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"private": true,
"dependencies": {
"@appquality/languages": "1.4.3",
"@appquality/unguess-design-system": "4.0.36",
"@appquality/unguess-design-system": "4.0.37",
"@headwayapp/react-widget": "^0.0.4",
"@reduxjs/toolkit": "^1.8.0",
"@sentry/react": "^8.32.0",
Expand Down
234 changes: 234 additions & 0 deletions src/assets/banner_suggestions/cyber.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
531 changes: 221 additions & 310 deletions src/assets/banner_suggestions/experience.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
331 changes: 0 additions & 331 deletions src/assets/banner_suggestions/testing_automation.svg

This file was deleted.

3 changes: 3 additions & 0 deletions src/assets/icons/accessibility-task-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
109 changes: 48 additions & 61 deletions src/common/components/inviteUsers/campaignSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import {
AccordionNew,
Button,
getColor,
Label,
MD,
Modal,
ModalClose,
Notification,
Span,
getColor,
useToast,
} from '@appquality/unguess-design-system';
import { FormikHelpers } from 'formik';
Expand Down Expand Up @@ -35,8 +36,6 @@ import {
FixedBody,
FlexContainer,
SettingsDivider,
StyledAccordion,
StyledAccordionPanel,
UsersContainer,
UsersLabel,
} from './styled';
Expand Down Expand Up @@ -361,42 +360,36 @@ export const CampaignSettings = () => {
</UsersLabel>
)}
{projectCount > 0 && (
<StyledAccordion
<AccordionNew
isCompact
level={3}
key="project_users_accordion"
isAnimated
isExpandable
defaultExpandedSections={[]}
>
<StyledAccordion.Section>
<StyledAccordion.Header>
<StyledAccordion.Label style={{ padding: 0 }}>
<UsersLabel>
<ProjectsIcon
style={{
color: appTheme.palette.grey[600],
marginRight: appTheme.space.xs,
}}
/>
<MD isBold>
{t('__PERMISSION_SETTINGS_PROJECT_USERS')}{' '}
<Span
isBold={false}
style={{ color: appTheme.palette.grey[600] }}
>
({projectCount})
</Span>
</MD>
</UsersLabel>
</StyledAccordion.Label>
</StyledAccordion.Header>
<StyledAccordionPanel>
<AccordionNew.Section>
<AccordionNew.Header
icon={
<ProjectsIcon
style={{
color: appTheme.palette.grey[600],
marginRight: appTheme.space.xs,
}}
/>
}
>
<AccordionNew.Label
label={`${t(
'__PERMISSION_SETTINGS_PROJECT_USERS'
)} (${projectCount})`}
/>
</AccordionNew.Header>
<AccordionNew.Panel>
{projectUsers?.items.map((user) => (
<UserItem key={user.id} user={user} />
))}
</StyledAccordionPanel>
</StyledAccordion.Section>
</StyledAccordion>
</AccordionNew.Panel>
</AccordionNew.Section>
</AccordionNew>
)}
{workspaceUsersError && (
<UsersLabel>
Expand All @@ -412,42 +405,36 @@ export const CampaignSettings = () => {
</UsersLabel>
)}
{workspaceCount > 0 && (
<StyledAccordion
<AccordionNew
isCompact
level={3}
key="workspace_users_accordion"
isAnimated
isExpandable
defaultExpandedSections={[]}
>
<StyledAccordion.Section>
<StyledAccordion.Header>
<StyledAccordion.Label style={{ padding: 0 }}>
<UsersLabel>
<WorkspacesIcon
style={{
color: appTheme.palette.grey[600],
marginRight: appTheme.space.xs,
}}
/>
<MD isBold>
{t('__PERMISSION_SETTINGS_WORKSPACE_USERS')}{' '}
<Span
isBold={false}
style={{ color: appTheme.palette.grey[600] }}
>
({workspaceCount})
</Span>
</MD>
</UsersLabel>
</StyledAccordion.Label>
</StyledAccordion.Header>
<StyledAccordionPanel>
<AccordionNew.Section>
<AccordionNew.Header
icon={
<ProjectsIcon
style={{
color: appTheme.palette.grey[600],
marginRight: appTheme.space.xs,
}}
/>
}
>
<AccordionNew.Label
label={`${t(
'__PERMISSION_SETTINGS_WORKSPACE_USERS'
)} (${workspaceCount})`}
/>
</AccordionNew.Header>
<AccordionNew.Panel>
{workspaceUsers?.items.map((user) => (
<UserItem key={user.id} user={user} />
))}
</StyledAccordionPanel>
</StyledAccordion.Section>
</StyledAccordion>
</AccordionNew.Panel>
</AccordionNew.Section>
</AccordionNew>
)}
</FlexContainer>
</Modal.Body>
Expand Down
57 changes: 25 additions & 32 deletions src/common/components/inviteUsers/projectSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import {
AccordionNew,
Button,
getColor,
Label,
MD,
Modal,
ModalClose,
Notification,
Span,
getColor,
useToast,
} from '@appquality/unguess-design-system';
import { FormikHelpers } from 'formik';
Expand All @@ -32,8 +33,6 @@ import {
FixedBody,
FlexContainer,
SettingsDivider,
StyledAccordion,
StyledAccordionPanel,
UsersContainer,
UsersLabel,
} from './styled';
Expand Down Expand Up @@ -335,42 +334,36 @@ export const ProjectSettings = () => {
</UsersLabel>
)}
{workspaceCount > 0 && (
<StyledAccordion
<AccordionNew
level={3}
key="workspace_users_accordion"
isAnimated
isExpandable
defaultExpandedSections={[]}
isCompact
>
<StyledAccordion.Section>
<StyledAccordion.Header>
<StyledAccordion.Label style={{ padding: 0 }}>
<UsersLabel>
<WorkspacesIcon
style={{
color: appTheme.palette.grey[600],
marginRight: appTheme.space.xs,
}}
/>
<MD isBold>
{t('__PERMISSION_SETTINGS_WORKSPACE_USERS')}{' '}
<Span
isBold={false}
style={{ color: appTheme.palette.grey[600] }}
>
({workspaceCount})
</Span>
</MD>
</UsersLabel>
</StyledAccordion.Label>
</StyledAccordion.Header>
<StyledAccordionPanel>
<AccordionNew.Section>
<AccordionNew.Header
icon={
<WorkspacesIcon
style={{
color: appTheme.palette.grey[600],
marginRight: appTheme.space.xs,
}}
/>
}
>
<AccordionNew.Label
label={`${t(
'__PERMISSION_SETTINGS_WORKSPACE_USERS'
)} (${workspaceCount})`}
/>
</AccordionNew.Header>
<AccordionNew.Panel>
{workspaceUsers?.items.map((user) => (
<UserItem key={user.id} user={user} />
))}
</StyledAccordionPanel>
</StyledAccordion.Section>
</StyledAccordion>
</AccordionNew.Panel>
</AccordionNew.Section>
</AccordionNew>
)}
</FlexContainer>
</Modal.Body>
Expand Down
23 changes: 1 addition & 22 deletions src/common/components/inviteUsers/styled.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
import {
Accordion,
MD,
Modal,
getColor,
} from '@appquality/unguess-design-system';
import { getColor, MD, Modal } from '@appquality/unguess-design-system';
import styled from 'styled-components';

export const FlexContainer = styled.div<{ isLoading?: boolean }>`
Expand All @@ -25,22 +20,6 @@ export const SettingsDivider = styled.div`
padding-top: ${({ theme }) => theme.space.base * 6}px;
`;

export const StyledAccordion = styled(Accordion)<{
isDisabled?: boolean;
}>`
${({ isDisabled }) =>
isDisabled &&
`
opacity: 0.5;
pointer-events: none;
`}
`;

export const StyledAccordionPanel = styled(Accordion.Panel)`
padding: 0;
padding-left: ${({ theme }) => theme.space.xs};
`;

export const UsersLabel = styled(MD)`
display: flex;
align-items: center;
Expand Down
38 changes: 18 additions & 20 deletions src/common/components/inviteUsers/userItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import {
Avatar,
ButtonMenu,
Ellipsis,
getColor,
MD,
SM,
Span,
getColor,
} from '@appquality/unguess-design-system';
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
Expand Down Expand Up @@ -56,27 +56,25 @@ export const UserItem = ({
{getInitials(user.name.length ? user.name : user.email)}
</Avatar>
<div>
<StyledEllipsis>
<MD
isBold
style={{
color: getColor(appTheme.colors.primaryHue, 600),
}}
>
<MD
isBold
style={{
color: getColor(appTheme.colors.primaryHue, 600),
}}
>
<StyledEllipsis>
{user.name.length ? user.name : user.email}{' '}
{isMe && t('__WORKSPACE_SETTINGS_CURRENT_MEMBER_YOU_LABEL')}
</MD>
</StyledEllipsis>
{user.name.length > 0 && (
<StyledEllipsis>
<SM
style={{
color: appTheme.palette.grey[700],
}}
>
{user.email}
</SM>
</StyledEllipsis>
</MD>
{user.name.length > 0 && (
<SM
style={{
color: appTheme.palette.grey[700],
}}
>
<StyledEllipsis>{user.email}</StyledEllipsis>
</SM>
)}
</div>
{onResendInvite && onRemoveUser ? (
Expand Down Expand Up @@ -109,7 +107,7 @@ export const UserItem = ({
}}
>
{user.invitationPending && (
<ButtonMenu.Item value="invite" onClick={onResendInvite}>
<ButtonMenu.Item value="invite">
{t('__WORKSPACE_SETTINGS_MEMBER_RESEND_INVITE_ACTION')}
</ButtonMenu.Item>
)}
Expand Down
Loading
Loading