diff --git a/frontend/rabbi_gerzi/cypress/e2e/about.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/about.cy.ts new file mode 100644 index 0000000..be249f8 --- /dev/null +++ b/frontend/rabbi_gerzi/cypress/e2e/about.cy.ts @@ -0,0 +1,129 @@ +describe('about page', () => { + beforeEach(() => { + cy.visit('/about') + }) + + it('renders the header and about hero', () => { + cy.get('header.site-header').within(() => { + cy.contains('Torah Media').should('be.visible') + cy.contains('About').should('be.visible') + cy.contains('Contact').should('be.visible') + cy.contains('Donate').should('be.visible') + }) + + cy.get('[data-cy="about-hero"]').within(() => { + cy.contains('h1', 'About Rabbi Gerzi').should('be.visible') + cy.contains('Healthy, Integrated and Balanced Torah living') + .should('be.visible') + cy.get('[data-cy="about-hero-image"]') + .should('be.visible') + .and('have.attr', 'alt') + .and('match', /Rabbi Yehoshua Gerzi/i) + }) + }) + + it('renders the copied biography and mission sections', () => { + cy.get('[data-cy="about-story"]').within(() => { + cy.contains('h2', 'About Rabbi Gerzi').should('be.visible') + cy.contains('Pilzno Rebbe').should('be.visible') + cy.contains('descends from an illustrious lineage') + .should('be.visible') + cy.contains('physical therapist, music instructor, martial artist') + .should('be.visible') + }) + + cy.get('[data-cy="about-vision"]').within(() => { + cy.contains('h2', "Rabbi Gerzi's Vision").should('be.visible') + cy.contains('from vagueness to clarity').should('be.visible') + cy.contains('weekly chaburot and various events') + .should('be.visible') + }) + + cy.get('[data-cy="about-mission"]').within(() => { + cy.contains('h2', 'The Mission').should('be.visible') + cy.contains('A Clear Framework').should('be.visible') + cy.contains('Community and Support').should('be.visible') + cy.contains('Professional Structure').should('be.visible') + }) + + cy.get('[data-cy="about-teachers"]').within(() => { + cy.contains('h2', "Rabbi Gerzi's Teachers").should('be.visible') + cy.contains('Rabbi Yosef Singer').should('be.visible') + cy.contains('Rabbi Efraim Greenblatt').should('be.visible') + cy.contains('Rabbi Mordechai Zukerman').should('be.visible') + }) + }) + + it('renders the rabbanim section without repeated carousel copies', () => { + const expectedRabbanim = [ + 'The Biala Rebbe', + 'The Pilzno Rebbe, Rabbi Yosef Singer', + 'Dayan Gershon Lopian', + 'Rabbi Efraim Greenblatt', + 'The Sassover Rebbe', + 'The Pashkana Rebbe', + 'Rabbi Mordechai Zukerman', + 'The Radamishler Rebbe', + 'Rabbi Yoseph Leiberman', + 'The Krechnover Rebbe', + ] + + cy.get('[data-cy="rabbanim"]').within(() => { + cy.contains('h2', 'Rabbanim').should('be.visible') + cy.get('[data-cy="rabbanim-card"]').should( + 'have.length', + expectedRabbanim.length, + ) + + expectedRabbanim.forEach((rabbiName) => { + cy.contains('[data-cy="rabbanim-card"]', rabbiName) + .should('be.visible') + }) + + cy.contains('match the person in front of you').should('be.visible') + cy.contains('depth and the profundity of love') + .should('be.visible') + }) + }) + + it('renders the haskamot image gallery', () => { + cy.get('[data-cy="haskamot"]').within(() => { + cy.contains('h2', 'Haskamot').should('be.visible') + cy.get('[data-cy="haskamah-image"]').should('have.length', 6) + cy.get('[data-cy="haskamah-image"]') + .first() + .should('be.visible') + .and('have.attr', 'alt', 'Haskamah letter 1') + cy.get('[data-cy="haskamah-image"]') + .last() + .and('have.attr', 'alt', 'Haskamah letter 6') + }) + }) + + it('keeps the page readable on mobile', () => { + cy.viewport(390, 900) + + cy.get('[data-cy="about-hero"]').should('be.visible') + cy.get('[data-cy="rabbanim-card"]').first().should('be.visible') + cy.get('[data-cy="haskamah-image"]').first().should('be.visible') + }) + + it('renders the get involved form and footer', () => { + cy.get('[data-cy="get-involved"]').within(() => { + cy.contains('h2', 'Get Involved').should('be.visible') + cy.contains('Subscribe for updates as we release new content') + .should('be.visible') + cy.get('input[name="fullName"]').should('be.visible') + cy.get('input[name="email"]').should('be.visible') + cy.contains('button', 'Submit').should('be.visible') + }) + + cy.get('[data-cy="footer"]').within(() => { + cy.contains('Torah Media').should('be.visible') + cy.contains('About').should('be.visible') + cy.contains('Donate').should('be.visible') + cy.contains('Contact').should('be.visible') + cy.contains(/Rabbi Gerzi 2025/).should('be.visible') + }) + }) +}) diff --git a/frontend/rabbi_gerzi/public/assets/about/about-hero.jpg b/frontend/rabbi_gerzi/public/assets/about/about-hero.jpg new file mode 100644 index 0000000..d229681 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/about-hero.jpg differ diff --git a/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-1.jpg b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-1.jpg new file mode 100644 index 0000000..196a432 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-1.jpg differ diff --git a/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-2.jpg b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-2.jpg new file mode 100644 index 0000000..dae32bc Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-2.jpg differ diff --git a/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-3.jpg b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-3.jpg new file mode 100644 index 0000000..532fb3a Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-3.jpg differ diff --git a/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-4.jpg b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-4.jpg new file mode 100644 index 0000000..4a42eb0 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-4.jpg differ diff --git a/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-5.jpg b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-5.jpg new file mode 100644 index 0000000..1ff5e97 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-5.jpg differ diff --git a/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-6.jpg b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-6.jpg new file mode 100644 index 0000000..23100a2 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/haskamot/haskamah-6.jpg differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/biala-rebbe.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/biala-rebbe.png new file mode 100644 index 0000000..49a7aa8 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/biala-rebbe.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/dayan-gershon-lopian.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/dayan-gershon-lopian.png new file mode 100644 index 0000000..e0eb368 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/dayan-gershon-lopian.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/krechnover-rebbe.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/krechnover-rebbe.png new file mode 100644 index 0000000..60d5d9f Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/krechnover-rebbe.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/pashkana-rebbe.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/pashkana-rebbe.png new file mode 100644 index 0000000..bf0653b Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/pashkana-rebbe.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/pilzno-rebbe.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/pilzno-rebbe.png new file mode 100644 index 0000000..742ade7 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/pilzno-rebbe.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-efraim-greenblatt.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-efraim-greenblatt.png new file mode 100644 index 0000000..867fcc1 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-efraim-greenblatt.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-mordechai-zukerman.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-mordechai-zukerman.png new file mode 100644 index 0000000..273c1ff Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-mordechai-zukerman.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-yoseph-leiberman.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-yoseph-leiberman.png new file mode 100644 index 0000000..68650b3 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/rabbi-yoseph-leiberman.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/radamishler-rebbe.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/radamishler-rebbe.png new file mode 100644 index 0000000..c410e71 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/radamishler-rebbe.png differ diff --git a/frontend/rabbi_gerzi/public/assets/about/rabbanim/sassover-rebbe.png b/frontend/rabbi_gerzi/public/assets/about/rabbanim/sassover-rebbe.png new file mode 100644 index 0000000..daa49f3 Binary files /dev/null and b/frontend/rabbi_gerzi/public/assets/about/rabbanim/sassover-rebbe.png differ diff --git a/frontend/rabbi_gerzi/src/router/index.ts b/frontend/rabbi_gerzi/src/router/index.ts index 90ed225..683e051 100644 --- a/frontend/rabbi_gerzi/src/router/index.ts +++ b/frontend/rabbi_gerzi/src/router/index.ts @@ -1,5 +1,6 @@ import { createRouter, createWebHistory } from 'vue-router' import HomePage from '@/views/HomePage.vue' +import AboutPage from '@/views/AboutPage.vue' import LoginPage from '@/views/LoginPage.vue' import MediaPage from '@/views/MediaPage.vue' import ElementPage from '@/views/ElementPage.vue' @@ -19,6 +20,11 @@ const router = createRouter({ name: 'login', component: LoginPage, }, + { + path: '/about', + name: 'about', + component: AboutPage, + }, { path: '/media', name: 'media', diff --git a/frontend/rabbi_gerzi/src/views/AboutPage.vue b/frontend/rabbi_gerzi/src/views/AboutPage.vue new file mode 100644 index 0000000..ce6e915 --- /dev/null +++ b/frontend/rabbi_gerzi/src/views/AboutPage.vue @@ -0,0 +1,932 @@ + + + + +