Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
8abc231
setup:github workflow to test on pr
ajoykumardas12 Jan 20, 2024
134d0ab
reduce job timeout
ajoykumardas12 Jan 20, 2024
3d1a652
fix: formating in tsconfig
prakashchoudhary07 Jan 20, 2024
6b42d03
fix: update Node version to 18.20.8 in package.json
prakashchoudhary07 Nov 9, 2025
b309b37
fix: update caniuse-lite and string-width dependencies in yarn.lock
prakashchoudhary07 Nov 9, 2025
c57b30d
fix: update eslint and related dependencies in package.json and yarn.…
prakashchoudhary07 Nov 9, 2025
a7368c6
chore: downgrade msw, as in previous upgrade PR #167, just the packag…
prakashchoudhary07 Nov 9, 2025
894de20
fix: remove outdated @types/react-toastify dependency from package.json
prakashchoudhary07 Nov 9, 2025
5a10114
fix: simplify jest.config.js and add resolutions for string-width, st…
prakashchoudhary07 Nov 9, 2025
378e0ed
fix: downgrade autoprefixer to 10.4.13 and remove resolutions for str…
prakashchoudhary07 Nov 9, 2025
0074b64
fix: update toast notification position format in notifyBase function
prakashchoudhary07 Nov 9, 2025
75042fc
fix: correct URL constant declaration and update test to use link rol…
prakashchoudhary07 Nov 9, 2025
4db836c
fix: add @types/jest dependency to improve TypeScript support for Jest
prakashchoudhary07 Nov 9, 2025
704fc5c
fix: format Spinner component and clean up CSS files
prakashchoudhary07 Nov 9, 2025
79a3330
fix: add resolutions for string-width, strip-ansi, wrap-ansi, and mut…
prakashchoudhary07 Nov 9, 2025
b4008b2
chore: downgrade packages, as previously when upgrading it was not do…
prakashchoudhary07 Nov 9, 2025
0e97559
fix: update jest and jest-environment-jsdom to version 29.7.0 in pack…
prakashchoudhary07 Nov 9, 2025
e39e4aa
fix: add cache configuration for yarn in CI workflow
prakashchoudhary07 Nov 9, 2025
97249a2
fix: replace data-testId with data-testid for consistency in componen…
prakashchoudhary07 Nov 9, 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
29 changes: 29 additions & 0 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# For more information see: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions

name: Continuous Integration

on:
pull_request:
branches: ['*']

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [18.x]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider pinning the Node version more specifically.

The workflow uses 18.x while package.json specifies 18.20.8 via Volta. Using a more specific version in CI ensures consistency with local development.

Apply this diff to align with the Volta configuration:

       matrix:
-        node-version: [18.x]
+        node-version: [18.20.8]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
node-version: [18.x]
node-version: [18.20.8]
🤖 Prompt for AI Agents
In .github/workflows/continuous-integration.yml around line 15, the job
currently uses a broad node-version (18.x) which can differ from the
Volta-specified Node version in package.json; update the node-version entry to
the exact version used by Volta (18.20.8) so CI matches local environment and
avoids unexpected version drift.


timeout-minutes: 10

steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
- run: yarn
- run: yarn prettier:check
- run: yarn test:coverage
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider uploading coverage reports.

The workflow runs test coverage but doesn't upload or report the results anywhere. Consider integrating with a coverage service like Codecov or Coveralls for visibility into test coverage trends.

Example step to add after test coverage:

      - name: Upload coverage reports
        uses: codecov/codecov-action@v3
        with:
          files: ./coverage/coverage-final.json
          fail_ci_if_error: false
🤖 Prompt for AI Agents
.github/workflows/continuous-integration.yml around line 27: the workflow runs
test coverage but never uploads the reports; add a new job step immediately
after the "yarn test:coverage" run to upload the generated coverage artifact to
a coverage service (e.g., Codecov or Coveralls). Install or reference the
appropriate GitHub Action (for example codecov/codecov-action@v3), point it at
the coverage output file produced by your test runner (e.g.,
coverage/coverage-final.json or coverage/lcov.info), and set fail_ci_if_error or
equivalent to false so CI doesn't fail on upload issues; ensure any required
secrets/tokens are added to repository secrets if the chosen service requires
authentication.

- run: yarn build
7 changes: 1 addition & 6 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
const nextJest = require('next/jest');

const createJestConfig = nextJest({
dir: './',
});
const createJestConfig = nextJest({ dir: './' });

const customJestConfig = {
setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
moduleDirectories: ['node_modules', '<rootDir>/'],
testEnvironment: 'jest-environment-jsdom',
testEnvironmentOptions: {
customExportConditions: [''],
},
};

module.exports = createJestConfig(customJestConfig);
26 changes: 17 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"volta": {
"node": "18.16.0",
"node": "18.20.8",
"yarn": "1.22.19"
},
"scripts": {
Expand All @@ -13,6 +13,8 @@
"build:production": "cp ./env/.env.production .env && next build",
"start": "next start",
"test": "jest --watch",
"test:coverage": "jest --coverage",
"build": "next build",
"lint:check": "next lint",
"lint:fix": "next lint --fix",
"build:staging": "cp ./env/.env.staging .env && next build",
Expand All @@ -31,8 +33,7 @@
"@types/node": "22.5.0",
"@types/react": "18.3.4",
"@types/react-dom": "18.3.0",
"@types/react-toastify": "^4.1.0",
"eslint": "9.9.0",
"eslint": "^8.57.0",
"eslint-config-next": "14.2.6",
"framer-motion": "^11.3.29",
"module-alias": "^2.2.3",
Expand All @@ -47,18 +48,25 @@
"whatwg-fetch": "^3.6.20"
},
"devDependencies": {
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.4.8",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.5.2",
"autoprefixer": "^10.4.20",
"@testing-library/dom": "^8.19.0",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^14.4.3",
"@types/jest": "^29.5.14",
"autoprefixer": "^10.4.13",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"local-ssl-proxy": "^2.0.5",
"msw": "^2.4.1",
"msw": "^1.3.2",
"npm-run-all": "^4.1.5",
"postcss": "^8.4.41",
"prettier": "^3.3.3",
"tailwindcss": "^3.4.10"
},
"resolutions": {
"string-width": "^4.2.3",
"strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0",
"mute-stream": "^1.0.0"
}
}
2 changes: 1 addition & 1 deletion src/components/Layout/Navbar/NavbarDesktop.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const NavbarDesktop: FC<NavbarTypes> = ({
));

return (
<nav className={styles.navbar} data-testId="navbarDesktop">
<nav className={styles.navbar} data-testid="navbarDesktop">
<UnorderedList listStyleType="none" className={styles.navbar_menu}>
<ListItem>
<Link href={HOME_URL}>
Expand Down
6 changes: 3 additions & 3 deletions src/components/Layout/Navbar/NavbarMobile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ const NavbarMobile: FC<NavbarTypes> = ({

return (
<>
<Box className={styles.navbarMobile_container} data-testId="navbarMobile">
<Box className={styles.navbarMobile_container} data-testid="navbarMobile">
<Button
data-testId="hamburger"
data-testid="hamburger"
onClick={() => setNavLinksVisibility((prev) => !prev)}
>
<Image
Expand All @@ -51,7 +51,7 @@ const NavbarMobile: FC<NavbarTypes> = ({
</Box>
{navLinksVisibility && (
<UnorderedList
data-testId="linksContainer"
data-testid="linksContainer"
listStyleType="none"
className={styles.navbarMobile_menu}
>
Expand Down
43 changes: 20 additions & 23 deletions src/components/MemberContribution/ContributionAccordianItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ import Image from 'next/image';
import { useGetIsSuperUser } from '../../utils/customHooks';
import { LINKS } from '@/src/constants/AppConstants';


const URL =LINKS.STATUS_BASE_URL
const URL = LINKS.STATUS_BASE_URL;
interface TaskDetails {
title: string;
state: string;
Expand All @@ -30,7 +29,6 @@ type ContributionAccordionItemProps = Readonly<{
openTaskStatusUpdateModal: (taskId: string, isTaskNoteworthy: string) => void;
}>;


export default function ContributionAccordianItem({
task,
isTitle,
Expand Down Expand Up @@ -60,26 +58,25 @@ export default function ContributionAccordianItem({
onMouseLeave={hideSetting}
pb={4}
className={styles.memberContribution_wrapper}
data-testId="contributionContainer"
data-testid="contributionContainer"
>

{task.id ? (
<Link
href={`${URL}${task.id}`}
isExternal
className={styles.memberContribution_taskHeading}
>
{taskTitle}
</Link>
) : (
<Link
href={`${task.url}`}
isExternal
className={styles.memberContribution_taskHeading}
>
{taskTitle}
</Link>
)}
{task.id ? (
<Link
href={`${URL}${task.id}`}
isExternal
className={styles.memberContribution_taskHeading}
>
{taskTitle}
</Link>
) : (
<Link
href={`${task.url}`}
isExternal
className={styles.memberContribution_taskHeading}
>
{taskTitle}
</Link>
)}
<Text mt={'0.4rem'} mb={'0.2rem'} color={'#636363'}>
{purpose}
</Text>
Expand All @@ -105,7 +102,7 @@ export default function ContributionAccordianItem({
right="-10px"
background="none"
_hover={{ bg: 'none' }}
data-testId="settingButton"
data-testid="settingButton"
>
<Image src="/icons/setting.svg" alt="" width={15} height={15} />
</Button>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export default function MembersCardPresentation({
onMouseLeave={hideSetting}
onClick={(e: SyntheticEvent) => routeHandler(e)}
className={styles.member_card}
data-testId="member card button"
data-testid="member card button"
>
<Image
className={styles.member_card__image}
Expand All @@ -74,14 +74,14 @@ export default function MembersCardPresentation({
{`${member.first_name} ${member.last_name}`}
</Text>
<small
data-testId="designation"
data-testid="designation"
className={styles.member_card__designation}
>
{member.designation}
</small>
</Box>
<Flex
data-testId="socials links"
data-testid="socials links"
justify="center"
className={styles.member_card__socials}
gap={1}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ export default function MembersSkillUpdateModalPresentation({
name={firstName}
src={picture}
/>
<p data-testId="username" className={styles.memberProfile_name}>
<p data-testid="username" className={styles.memberProfile_name}>
{`${firstName} ${lastName?.charAt(0)}.`}
</p>
</ModalHeader>
<ModalCloseButton
data-testId="close btn main"
data-testid="close btn main"
className={styles.memberModal_headerCloseButton}
/>
<ModalBody className={styles.memberModal_body}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ export default function MembersActiveSkills({
return (
<Skeleton height="80%" isLoaded={!isSkillsLoading}>
<Wrap
data-testId="active skills"
data-testid="active skills"
className={styles.memberActiveSkills_modal_wrap}
spacing="1rem"
>
<Skills username={username} skills={skills} />
{filteredTags?.length !== 0 && (
<WrapItem>
<IconButton
data-testId="add icon"
data-testid="add icon"
className={styles.memberActiveSkills_add_icon_button}
onClick={() => setIsTagsOpen((prevstate: boolean) => !prevstate)}
aria-label="Add skills"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export default function TagsMoadal({
if (searchTags === '') {
button = (
<IconButton
data-testId="search btn"
data-testid="search btn"
className={styles.skills_search_icon_button}
sx={{
minWidth: '0',
Expand All @@ -39,7 +39,7 @@ export default function TagsMoadal({
} else {
button = (
<IconButton
data-testId="close btn"
data-testid="close btn"
className={styles.skills_search_icon_button}
onClick={() => {
setSearchTags('');
Expand All @@ -56,7 +56,7 @@ export default function TagsMoadal({

return (
<Box
data-testId="tagModal bg_gray"
data-testid="tagModal bg_gray"
onClick={() => setIsTagsOpen(false)}
className={styles.bg_gray}
>
Expand Down
2 changes: 1 addition & 1 deletion src/components/NewMemberSection/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export default function NewMemberSection() {
className={styles.newMemberSectionLoadMore__container}
ref={loadMoreRef}
>
<Spinner/>
<Spinner />
</div>
)}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@
.newMemberSectionLoadMore__button:disabled:hover {
color: #020617;
background-color: #e2e8f0;
}
}
2 changes: 1 addition & 1 deletion src/store/superUserOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const superUserOptions = createSlice({
state,
{ payload: { visibility, taskId, isTaskNoteworthy } },
) => {
(state.isTaskUpdateModalVisible = visibility), (state.taskId = taskId);
((state.isTaskUpdateModalVisible = visibility), (state.taskId = taskId));
state.isTaskNoteworthy = isTaskNoteworthy;
},
setUserSkillModalVisibility: (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ describe('ContributionAccordianItem', () => {
);
expect(deliveryDetails).toBeInTheDocument();

const contributionHeading = screen.getByRole('heading', {
level: 3,
const contributionHeading = screen.getByRole('link', {
name: 'Make Real Dev Squad work!',
});
expect(contributionHeading).toBeInTheDocument();
Expand Down Expand Up @@ -64,8 +63,7 @@ describe('ContributionAccordianItem', () => {
);
expect(container).toBeInTheDocument();

const contributionHeading = screen.getByRole('heading', {
level: 3,
const contributionHeading = screen.getByRole('link', {
name: '[Design doc] For deciding the final indexes on the table.',
});
expect(contributionHeading).toBeInTheDocument();
Expand Down Expand Up @@ -93,8 +91,7 @@ describe('ContributionAccordianItem', () => {
const contributionContainer = screen.getByTestId('contributionContainer');
expect(contributionContainer).toBeInTheDocument();

const contributionHeading = screen.getByRole('heading', {
level: 3,
const contributionHeading = screen.getByRole('link', {
name: 'Create multiple Extension Requests',
});
expect(contributionHeading).toBeInTheDocument();
Expand Down
5 changes: 1 addition & 4 deletions src/utils/toast.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@ export default function Toast() {
}

const notifyBase = (text: string, type: 'success' | 'error' | 'info') => {
toast[type](text, {
position: toast.POSITION.TOP_RIGHT,
autoClose: 2000,
} as ToastOptions); // Here, we use `ToastOptions` to provide type information for the options object.
toast[type](text, { position: 'top-right', autoClose: 2000 } as ToastOptions); // Here, we use `ToastOptions` to provide type information for the options object.
};

export const notifySuccess = (text: string) => notifyBase(text, 'success');
Expand Down
1 change: 0 additions & 1 deletion styles/Home.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@
}
}


@media only screen and (max-width: 767px) {
.content {
margin-top: 1rem;
Expand Down
Loading