diff --git a/.github/workflows/cypress-test.yml b/.github/workflows/cypress-test.yml new file mode 100644 index 00000000..8a6b5981 --- /dev/null +++ b/.github/workflows/cypress-test.yml @@ -0,0 +1,27 @@ +name: Cypress End-to-End test + +on: + pull_request: + branches: + - master + push: + branches: + - master + +jobs: + cypress-run: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Cypress run + uses: cypress-io/github-action@v6 + with: + build: npm run build + start: npm start diff --git a/.github/workflows/scripts/mailchimp/package-lock.json b/.github/workflows/scripts/mailchimp/package-lock.json index cc41a360..7ee7d84f 100644 --- a/.github/workflows/scripts/mailchimp/package-lock.json +++ b/.github/workflows/scripts/mailchimp/package-lock.json @@ -594,4 +594,4 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" } } -} +} \ No newline at end of file diff --git a/.github/workflows/update-maintainers-trigger.yaml b/.github/workflows/update-maintainers-trigger.yaml new file mode 100644 index 00000000..12fc4abe --- /dev/null +++ b/.github/workflows/update-maintainers-trigger.yaml @@ -0,0 +1,28 @@ +# This action is centrally managed in https://github.com/asyncapi/.github/ +# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo + +name: Trigger MAINTAINERS.yaml file update + +on: + push: + branches: [ master ] + paths: + # Check all valid CODEOWNERS locations: + # https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-file-location + - 'CODEOWNERS' + - '.github/CODEOWNERS' + - '.docs/CODEOWNERS' + +jobs: + trigger-maintainers-update: + name: Trigger updating MAINTAINERS.yaml because of CODEOWNERS change + runs-on: ubuntu-latest + + steps: + - name: Repository Dispatch + uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # https://github.com/peter-evans/repository-dispatch/releases/tag/v3.0.0 + with: + # The PAT with the 'public_repo' scope is required + token: ${{ secrets.GH_TOKEN }} + repository: ${{ github.repository_owner }}/community + event-type: trigger-maintainers-update diff --git a/.nvmrc b/.nvmrc index 8351c193..3c032078 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -14 +18 diff --git a/CODEOWNERS b/CODEOWNERS index e2fe2988..a8518b40 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -5,6 +5,6 @@ # For more details, read the following article on GitHub: https://help.github.com/articles/about-codeowners/. # The default owners are automatically added as reviewers when you open a pull request unless different owners are specified in the file. -* @AceTheCreator @thulieblack @Mayaleeeee +* @AceTheCreator @thulieblack @Mayaleeeee @ashmit-coder -README.md @AceTheCreator @thulieblack @Mayaleeeee \ No newline at end of file +README.md @AceTheCreator @thulieblack @Mayaleeeee @ashmit-coder \ No newline at end of file diff --git a/components/About/about.js b/components/About/about.js index 02cf56f9..dea613ba 100644 --- a/components/About/about.js +++ b/components/About/about.js @@ -6,14 +6,13 @@ import Button from '../Buttons/button'; import Image from 'next/image'; function About() { return ( -
+
-
-
About The Event
+
About The Event
AACoT'24 @@ -28,27 +27,26 @@ function About() { We are currently looking for sponsors, for more details please read our Sponsorship Prospectus. -
diff --git a/components/Agenda/agenda.js b/components/Agenda/agenda.js index db9ba536..45028071 100644 --- a/components/Agenda/agenda.js +++ b/components/Agenda/agenda.js @@ -5,7 +5,7 @@ import Image from 'next/image' function Agenda({ city }) { return ( -
+
@@ -28,7 +28,7 @@ function Agenda({ city }) {
{city.agenda.map((talk) => { - return
+ return
{talk.time} @@ -43,7 +43,7 @@ function Agenda({ city }) {
{talk.speaker && typeof talk.speaker === 'number' ?
- {city.speakers[talk.speaker + {city.speakers[talk.speaker
@@ -58,7 +58,7 @@ function Agenda({ city }) { {talk.speaker.map((speak, i) =>
- {city.speakers[speak + {city.speakers[speak
diff --git a/components/Buttons/button.js b/components/Buttons/button.js index 9cd32e7e..aa2d4405 100644 --- a/components/Buttons/button.js +++ b/components/Buttons/button.js @@ -1,12 +1,13 @@ import React from 'react' -function Button({className, children, overlay, onClick, type, disabled}) { +function Button({className, children, overlay, onClick, type, disabled,test}) { return ( ); } diff --git a/components/Dropdown/dropdown.js b/components/Dropdown/dropdown.js index ddf605a7..35089f91 100644 --- a/components/Dropdown/dropdown.js +++ b/components/Dropdown/dropdown.js @@ -1,9 +1,22 @@ -import React, {useState} from 'react'; +import React, {useState,useRef,useEffect} from 'react'; function Dropdown({ active, items, setOptions, setOptions2 }) { const [show, setShow] = useState(false) + const dropdownRef = useRef(null); + useEffect(() => { + // This checks if the click event occurred outside the dropdown, if true we closes the dropdown. + function handleClickOutside(event) { + if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { + setShow(false); + } + } + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [dropdownRef]); return ( -
+
@@ -45,9 +58,9 @@ function Dropdown({ active, items, setOptions, setOptions2 }) { role='menu' aria-orientation='vertical' aria-labelledby='menu-button' - tabindex='-1' + tabIndex='-1' > -
+
{items && items.map((item) => { return ( @@ -60,7 +73,7 @@ function Dropdown({ active, items, setOptions, setOptions2 }) { }} className={`text-white block p-4 text-md cursor-pointer navbg`} role='menuitem' - tabindex='-1' + tabIndex='-1' id='menu-item-0' > {item.city} diff --git a/components/Footer/footer.js b/components/Footer/footer.js index 6bf70636..348162c8 100644 --- a/components/Footer/footer.js +++ b/components/Footer/footer.js @@ -15,16 +15,16 @@ function Footer() { imgUrl: "/img/Linkedln.png", }, { - name: "Tweeter(X)", - href: "https://twitter.com/asyncapispec", + name: "Twitter(X)", + href: "https://x.com/asyncapispec", imgUrl: "/img/twitter_new.png", }, ]; return ( -
-
+
+
- company logo + company logo
{/* This div helps keep the text centered */} @@ -35,6 +35,7 @@ function Footer() { target="_blank" rel="noreferrer" className="hover:text-sky-500 text-white duration-200 ease-in-out" + data-test="code-of-conduct" > Code of Conduct @@ -52,6 +53,7 @@ function Footer() { target="_blank" rel="noreferrer" className="w-12 h-12 rounded-lg border-[1.5px] border-[#556061] flex items-center justify-center hover:border-[#AD20E2] duration-150 ease-in-out" + data-test={`footer-${social.name}`} > {social.name} diff --git a/components/Form/Cfp/stepFour.js b/components/Form/Cfp/stepFour.js index 86c8dbb6..625464f3 100644 --- a/components/Form/Cfp/stepFour.js +++ b/components/Form/Cfp/stepFour.js @@ -48,6 +48,7 @@ function StepFour({ setStep, setForm, data }) { border: "1px solid #E50E99", }} onChange={(e) => setForm({ ...data, AdditionalInfo: e.target.value })} + data-test="step-four-additional" />
@@ -63,7 +64,8 @@ function StepFour({ setStep, setForm, data }) {
diff --git a/components/Form/Cfp/stepOne.js b/components/Form/Cfp/stepOne.js index 2086f073..1b0093ab 100644 --- a/components/Form/Cfp/stepOne.js +++ b/components/Form/Cfp/stepOne.js @@ -4,7 +4,7 @@ import Button from "../../Buttons/button"; function StepOne({ setStep, setForm, data }) { return ( -
setStep(e, 2)}> + setStep(e, 2)} data-test="step-one">

Let's start with your name

@@ -21,6 +21,7 @@ function StepOne({ setStep, setForm, data }) { border: "1px solid #E50E99", }} onChange={(e) => setForm({ ...data, Fullname: e.target.value })} + data-test="step-one-name" />
Email address
setForm({ ...data, Email: e.target.value })} + data-test="step-one-email" />
Bio