From 3c72cd296e8aea520e6d1361ae82d1d34c3d0871 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:30:23 +0300 Subject: [PATCH 01/13] test testimonial previews --- frontend/rabbi_gerzi/cypress/e2e/home.cy.ts | 65 +++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts index 2e9e197..f82e17e 100644 --- a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts +++ b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts @@ -162,6 +162,71 @@ describe('homepage testimonials carousel', () => { }) }) + it('shows faded half-card previews beside the active testimonial', () => { + cy.viewport(1200, 800) + cy.get('[data-cy="testimonials"]').within(() => { + cy.get('[data-cy="testimonial-active"]').as('activeCard') + cy.get('[data-cy="testimonial-previous-preview"]').as( + 'previousPreview', + ) + cy.get('[data-cy="testimonial-next-preview"]').as('nextPreview') + cy.get('[data-cy="testimonials-stage"]').as('testimonialStage') + }) + + cy.get('@activeCard').should('be.visible') + cy.get('@previousPreview').should('be.visible') + cy.get('@nextPreview').should('be.visible') + + cy.get('@activeCard').then((activeCardElements) => { + const activeOpacity = Number( + getComputedStyle(activeCardElements[0]).opacity, + ) + + cy.get('@previousPreview').then((previousPreviewElements) => { + const previousPreview = previousPreviewElements[0] + const previousOpacity = Number( + getComputedStyle(previousPreview).opacity, + ) + + cy.wrap(previousOpacity).should('be.lessThan', activeOpacity) + }) + + cy.get('@nextPreview').then((nextPreviewElements) => { + const nextPreview = nextPreviewElements[0] + const nextOpacity = Number(getComputedStyle(nextPreview).opacity) + + cy.wrap(nextOpacity).should('be.lessThan', activeOpacity) + }) + }) + + cy.get('@testimonialStage').then((testimonialStageElements) => { + const stageBounds = testimonialStageElements[0].getBoundingClientRect() + + cy.get('@previousPreview').then((previousPreviewElements) => { + const previousBounds = + previousPreviewElements[0].getBoundingClientRect() + const previousVisibleWidth = previousBounds.right - stageBounds.left + + cy.wrap(previousVisibleWidth).should( + 'be.closeTo', + previousBounds.width / 2, + 1, + ) + }) + + cy.get('@nextPreview').then((nextPreviewElements) => { + const nextBounds = nextPreviewElements[0].getBoundingClientRect() + const nextVisibleWidth = stageBounds.right - nextBounds.left + + cy.wrap(nextVisibleWidth).should( + 'be.closeTo', + nextBounds.width / 2, + 1, + ) + }) + }) + }) + it('advances to the next testimonial when next is clicked', () => { cy.get('[data-cy="testimonials"]').within(() => { cy.get('[data-cy="testimonial-active"]') From b88fe99b38d85942d688aec544f9c6c95fb4bda0 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:33:40 +0300 Subject: [PATCH 02/13] show testimonial previews --- frontend/rabbi_gerzi/src/views/HomePage.vue | 99 ++++++++++++++++++--- 1 file changed, 88 insertions(+), 11 deletions(-) diff --git a/frontend/rabbi_gerzi/src/views/HomePage.vue b/frontend/rabbi_gerzi/src/views/HomePage.vue index 1a28333..6cdbb38 100644 --- a/frontend/rabbi_gerzi/src/views/HomePage.vue +++ b/frontend/rabbi_gerzi/src/views/HomePage.vue @@ -23,6 +23,8 @@ interface Testimonial { quote: string } +type TestimonialPosition = 'active' | 'previous' | 'next' | 'hidden' + const testimonials: Testimonial[] = [ { name: 'Nathaniel M', @@ -45,12 +47,62 @@ const testimonials: Testimonial[] = [ const testimonialIndex = ref(0) +function previousTestimonialIndex(): number { + if (testimonialIndex.value === 0) { + return testimonials.length - 1 + } + + return testimonialIndex.value - 1 +} + +function nextTestimonialIndex(): number { + return (testimonialIndex.value + 1) % testimonials.length +} + +function testimonialPosition(index: number): TestimonialPosition { + if (index === testimonialIndex.value) { + return 'active' + } + + if (index === previousTestimonialIndex()) { + return 'previous' + } + + if (index === nextTestimonialIndex()) { + return 'next' + } + + return 'hidden' +} + +function testimonialDataCy(index: number): string { + const position = testimonialPosition(index) + + if (position === 'active') { + return 'testimonial-active' + } + + if (position === 'previous') { + return 'testimonial-previous-preview' + } + + if (position === 'next') { + return 'testimonial-next-preview' + } + + return 'testimonial-hidden' +} + +function testimonialClass(index: number): string { + return `testimonials__card--${testimonialPosition(index)}` +} + function nextTestimonial(): void { - testimonialIndex.value = (testimonialIndex.value + 1) % testimonials.length + testimonialIndex.value = nextTestimonialIndex() } function previousTestimonial(): void { - testimonialIndex.value = (testimonialIndex.value - 1 + testimonials.length) % testimonials.length + testimonialIndex.value = previousTestimonialIndex() } const newsletterFullName = ref('') @@ -229,16 +281,14 @@ const projects: Project[] = [

What People Are Saying

-
+

{{ testimonial.name }}

“{{ testimonial.quote }}”

@@ -666,7 +716,10 @@ const projects: Project[] = [ .testimonials__stage { position: relative; + width: min(100%, 960px); + margin: 0 auto; min-height: 220px; + overflow: hidden; } .testimonials__card { @@ -674,18 +727,42 @@ const projects: Project[] = [ border-radius: 14px; padding: 2rem; text-align: left; + width: 50%; max-width: 480px; - margin: 0 auto; opacity: 0; visibility: hidden; position: absolute; - inset: 0; - transition: opacity 0.3s ease; + top: 0; + left: 50%; + margin: 0; + box-sizing: border-box; + pointer-events: none; + transform: translateX(-50%); + transition: + opacity 0.3s ease, + transform 0.3s ease; } .testimonials__card--active { opacity: 1; visibility: visible; + z-index: 2; + transform: translateX(-50%); +} + +.testimonials__card--previous, +.testimonials__card--next { + opacity: 0.35; + visibility: visible; + z-index: 1; +} + +.testimonials__card--previous { + transform: translateX(-150%); +} + +.testimonials__card--next { + transform: translateX(50%); } .testimonials__name { From c774c73b268ea01c144ffdc060e2231363727fff Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:34:49 +0300 Subject: [PATCH 03/13] test mobile testimonial previews --- frontend/rabbi_gerzi/cypress/e2e/home.cy.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts index f82e17e..16ab7c6 100644 --- a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts +++ b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts @@ -227,6 +227,16 @@ describe('homepage testimonials carousel', () => { }) }) + it('hides side previews on narrow screens', () => { + cy.viewport(390, 800) + cy.get('[data-cy="testimonials"]').within(() => { + cy.get('[data-cy="testimonial-active"]').should('be.visible') + cy.get('[data-cy="testimonial-previous-preview"]') + .should('not.be.visible') + cy.get('[data-cy="testimonial-next-preview"]').should('not.be.visible') + }) + }) + it('advances to the next testimonial when next is clicked', () => { cy.get('[data-cy="testimonials"]').within(() => { cy.get('[data-cy="testimonial-active"]') From 87012bc2368e0b47baafdd13f60c5ae7f8a0836f Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:36:27 +0300 Subject: [PATCH 04/13] hide mobile testimonial previews --- frontend/rabbi_gerzi/src/views/HomePage.vue | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/frontend/rabbi_gerzi/src/views/HomePage.vue b/frontend/rabbi_gerzi/src/views/HomePage.vue index 6cdbb38..cccab88 100644 --- a/frontend/rabbi_gerzi/src/views/HomePage.vue +++ b/frontend/rabbi_gerzi/src/views/HomePage.vue @@ -1146,6 +1146,27 @@ const projects: Project[] = [ grid-template-columns: 1fr; } + .testimonials__stage { + width: min(100%, 480px); + } + + .testimonials__card { + width: 100%; + left: 0; + transform: none; + } + + .testimonials__card--active { + transform: none; + } + + .testimonials__card--previous, + .testimonials__card--next { + opacity: 0; + visibility: hidden; + transform: none; + } + .journey__cards { grid-template-columns: 1fr; } From fa70a4a1b7432ced3e4d6469b42f59eb8d0693fb Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:42:55 +0300 Subject: [PATCH 05/13] test testimonial card spacing --- frontend/rabbi_gerzi/cypress/e2e/home.cy.ts | 58 +++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts index 16ab7c6..a9ab336 100644 --- a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts +++ b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts @@ -227,6 +227,64 @@ describe('homepage testimonials carousel', () => { }) }) + it('keeps desktop cards equal sized and separated', () => { + const expectedCardGap = 24 + const expectedControlsGap = 12 + + cy.viewport(1200, 800) + cy.get('[data-cy="testimonials"]').within(() => { + cy.get('[data-cy="testimonial-active"]').as('activeCard') + cy.get('[data-cy="testimonial-previous-preview"]').as( + 'previousPreview', + ) + cy.get('[data-cy="testimonial-next-preview"]').as('nextPreview') + cy.get('[data-cy="testimonial-prev"]') + .parent() + .as('testimonialControls') + }) + + cy.get('@activeCard').then((activeCardElements) => { + const activeBounds = activeCardElements[0].getBoundingClientRect() + + cy.get('@previousPreview').then((previousPreviewElements) => { + const previousBounds = + previousPreviewElements[0].getBoundingClientRect() + const previousGap = activeBounds.left - previousBounds.right + + cy.wrap(previousBounds.height).should( + 'be.closeTo', + activeBounds.height, + 1, + ) + cy.wrap(previousGap).should('be.closeTo', expectedCardGap, 1) + }) + + cy.get('@nextPreview').then((nextPreviewElements) => { + const nextBounds = nextPreviewElements[0].getBoundingClientRect() + const nextGap = nextBounds.left - activeBounds.right + + cy.wrap(nextBounds.height).should( + 'be.closeTo', + activeBounds.height, + 1, + ) + cy.wrap(nextGap).should('be.closeTo', expectedCardGap, 1) + }) + + cy.get('@testimonialControls').then((testimonialControlsElements) => { + const controlsBounds = + testimonialControlsElements[0].getBoundingClientRect() + const controlsGap = controlsBounds.top - activeBounds.bottom + + cy.wrap(controlsGap).should( + 'be.closeTo', + expectedControlsGap, + 1, + ) + }) + }) + }) + it('hides side previews on narrow screens', () => { cy.viewport(390, 800) cy.get('[data-cy="testimonials"]').within(() => { From 289ecec44ee42dd7f7418ee2de95bc4e982329f5 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:45:51 +0300 Subject: [PATCH 06/13] space testimonial cards --- frontend/rabbi_gerzi/src/views/HomePage.vue | 24 ++++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/frontend/rabbi_gerzi/src/views/HomePage.vue b/frontend/rabbi_gerzi/src/views/HomePage.vue index cccab88..c693780 100644 --- a/frontend/rabbi_gerzi/src/views/HomePage.vue +++ b/frontend/rabbi_gerzi/src/views/HomePage.vue @@ -698,10 +698,14 @@ const projects: Project[] = [ .testimonials { background: var(--color-cream); padding: 5rem 2rem; + --testimonials-card-gap: 24px; + --testimonials-card-height: 220px; + --testimonials-controls-gap: 0.75rem; + --testimonials-stage-width: 1008px; } .testimonials__inner { - max-width: 960px; + max-width: var(--testimonials-stage-width); margin: 0 auto; text-align: center; } @@ -716,9 +720,9 @@ const projects: Project[] = [ .testimonials__stage { position: relative; - width: min(100%, 960px); + width: min(100%, var(--testimonials-stage-width)); + height: var(--testimonials-card-height); margin: 0 auto; - min-height: 220px; overflow: hidden; } @@ -727,8 +731,8 @@ const projects: Project[] = [ border-radius: 14px; padding: 2rem; text-align: left; - width: 50%; - max-width: 480px; + width: calc(50% - var(--testimonials-card-gap)); + height: var(--testimonials-card-height); opacity: 0; visibility: hidden; position: absolute; @@ -758,11 +762,11 @@ const projects: Project[] = [ } .testimonials__card--previous { - transform: translateX(-150%); + transform: translateX(calc(-150% - var(--testimonials-card-gap))); } .testimonials__card--next { - transform: translateX(50%); + transform: translateX(calc(50% + var(--testimonials-card-gap))); } .testimonials__name { @@ -786,7 +790,7 @@ const projects: Project[] = [ display: flex; justify-content: center; gap: 0.75rem; - margin-top: 2rem; + margin-top: var(--testimonials-controls-gap); } .testimonials__arrow { @@ -1127,6 +1131,10 @@ const projects: Project[] = [ } @media (max-width: 768px) { + .testimonials { + --testimonials-card-height: 320px; + } + .hero__content { grid-template-columns: 1fr; text-align: center; From 316bb05ef71a90226e283e3af3126c7f51a730cf Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:49:15 +0300 Subject: [PATCH 07/13] add placeholder testimonials --- frontend/rabbi_gerzi/src/views/HomePage.vue | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/frontend/rabbi_gerzi/src/views/HomePage.vue b/frontend/rabbi_gerzi/src/views/HomePage.vue index c693780..e1140f9 100644 --- a/frontend/rabbi_gerzi/src/views/HomePage.vue +++ b/frontend/rabbi_gerzi/src/views/HomePage.vue @@ -43,6 +43,24 @@ const testimonials: Testimonial[] = [ name: 'Anonymous Student', quote: 'My understanding of Torah has been profoundly improved through ' + 'his teachings.', }, + { + name: 'Placeholder Student 1', + quote: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do ' + + 'eiusmod tempor incididunt ut labore et dolore magna aliqua.', + }, + { + name: 'Placeholder Student 2', + quote: + 'Ut enim ad minim veniam, quis nostrud exercitation ullamco ' + + 'laboris nisi ut aliquip ex ea commodo consequat.', + }, + { + name: 'Placeholder Student 3', + quote: + 'Duis aute irure dolor in reprehenderit in voluptate velit esse ' + + 'cillum dolore eu fugiat nulla pariatur.', + }, ] const testimonialIndex = ref(0) From 73cd748ec210527482ce700ee099459b23771f03 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:51:57 +0300 Subject: [PATCH 08/13] smooth testimonial transitions --- frontend/rabbi_gerzi/src/views/HomePage.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/rabbi_gerzi/src/views/HomePage.vue b/frontend/rabbi_gerzi/src/views/HomePage.vue index e1140f9..86c3a22 100644 --- a/frontend/rabbi_gerzi/src/views/HomePage.vue +++ b/frontend/rabbi_gerzi/src/views/HomePage.vue @@ -761,8 +761,8 @@ const projects: Project[] = [ pointer-events: none; transform: translateX(-50%); transition: - opacity 0.3s ease, - transform 0.3s ease; + opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1), + transform 0.65s cubic-bezier(0.22, 1, 0.36, 1); } .testimonials__card--active { From 5dd9808ef2e41e876c7b0386ce58bd452f7d886a Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:53:41 +0300 Subject: [PATCH 09/13] slow testimonial transitions --- frontend/rabbi_gerzi/src/views/HomePage.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/rabbi_gerzi/src/views/HomePage.vue b/frontend/rabbi_gerzi/src/views/HomePage.vue index 86c3a22..438d97a 100644 --- a/frontend/rabbi_gerzi/src/views/HomePage.vue +++ b/frontend/rabbi_gerzi/src/views/HomePage.vue @@ -761,8 +761,8 @@ const projects: Project[] = [ pointer-events: none; transform: translateX(-50%); transition: - opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1), - transform 0.65s cubic-bezier(0.22, 1, 0.36, 1); + opacity 1s cubic-bezier(0.22, 1, 0.36, 1), + transform 1s cubic-bezier(0.22, 1, 0.36, 1); } .testimonials__card--active { From f1751b6f82ed8d9d9712526994605cd1a4f2286e Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 22:58:25 +0300 Subject: [PATCH 10/13] test testimonial entry direction --- frontend/rabbi_gerzi/cypress/e2e/home.cy.ts | 50 +++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts index a9ab336..6f529ee 100644 --- a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts +++ b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts @@ -285,6 +285,56 @@ describe('homepage testimonials carousel', () => { }) }) + it('brings entering side previews in from the clicked direction', () => { + const transitionSampleDelay = 100 + const transitionSettleDelay = 1100 + + cy.viewport(1200, 800) + cy.get('[data-cy="testimonials"]').within(() => { + cy.get('[data-cy="testimonial-prev"]').click() + cy.get('[data-cy="testimonial-previous-preview"]').as( + 'enteringPreviousPreview', + ) + }) + + cy.wait(transitionSampleDelay) + cy.get('@enteringPreviousPreview').then((previousPreviewElements) => { + const earlyPreviousLeft = + previousPreviewElements[0].getBoundingClientRect().left + + cy.wait(transitionSettleDelay) + cy.get('@enteringPreviousPreview').then((finalPreviewElements) => { + const finalPreviousLeft = + finalPreviewElements[0].getBoundingClientRect().left + + expect(earlyPreviousLeft).to.be.lessThan(finalPreviousLeft) + }) + }) + + cy.visit('/') + cy.viewport(1200, 800) + cy.get('[data-cy="testimonials"]').within(() => { + cy.get('[data-cy="testimonial-next"]').click() + cy.get('[data-cy="testimonial-next-preview"]').as( + 'enteringNextPreview', + ) + }) + + cy.wait(transitionSampleDelay) + cy.get('@enteringNextPreview').then((nextPreviewElements) => { + const earlyNextLeft = + nextPreviewElements[0].getBoundingClientRect().left + + cy.wait(transitionSettleDelay) + cy.get('@enteringNextPreview').then((finalPreviewElements) => { + const finalNextLeft = + finalPreviewElements[0].getBoundingClientRect().left + + expect(earlyNextLeft).to.be.greaterThan(finalNextLeft) + }) + }) + }) + it('hides side previews on narrow screens', () => { cy.viewport(390, 800) cy.get('[data-cy="testimonials"]').within(() => { From 6ab22d35d2f1fad6c95857ddfe7d563e18016096 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 23:01:01 +0300 Subject: [PATCH 11/13] fix testimonial entry direction --- frontend/rabbi_gerzi/src/views/HomePage.vue | 44 ++++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/frontend/rabbi_gerzi/src/views/HomePage.vue b/frontend/rabbi_gerzi/src/views/HomePage.vue index 438d97a..e1b0a81 100644 --- a/frontend/rabbi_gerzi/src/views/HomePage.vue +++ b/frontend/rabbi_gerzi/src/views/HomePage.vue @@ -65,6 +65,12 @@ const testimonials: Testimonial[] = [ const testimonialIndex = ref(0) +function testimonialOffset(index: number): number { + const relativeIndex = index - testimonialIndex.value + testimonials.length + + return relativeIndex % testimonials.length +} + function previousTestimonialIndex(): number { if (testimonialIndex.value === 0) { return testimonials.length - 1 @@ -78,15 +84,17 @@ function nextTestimonialIndex(): number { } function testimonialPosition(index: number): TestimonialPosition { - if (index === testimonialIndex.value) { + const offset = testimonialOffset(index) + + if (offset === 0) { return 'active' } - if (index === previousTestimonialIndex()) { + if (offset === testimonials.length - 1) { return 'previous' } - if (index === nextTestimonialIndex()) { + if (offset === 1) { return 'next' } @@ -111,8 +119,25 @@ function testimonialDataCy(index: number): string { return 'testimonial-hidden' } -function testimonialClass(index: number): string { - return `testimonials__card--${testimonialPosition(index)}` +function testimonialHiddenClass(index: number): string { + const offset = testimonialOffset(index) + + if (offset < testimonials.length / 2) { + return 'testimonials__card--hidden-next' + } + + return 'testimonials__card--hidden-previous' +} + +function testimonialClass(index: number): string[] { + const position = testimonialPosition(index) + const positionClass = `testimonials__card--${position}` + + if (position === 'hidden') { + return [positionClass, testimonialHiddenClass(index)] + } + + return [positionClass] } function nextTestimonial(): void { @@ -716,6 +741,7 @@ const projects: Project[] = [ .testimonials { background: var(--color-cream); padding: 5rem 2rem; + --testimonials-card-entry-gap: 48px; --testimonials-card-gap: 24px; --testimonials-card-height: 220px; --testimonials-controls-gap: 0.75rem; @@ -787,6 +813,14 @@ const projects: Project[] = [ transform: translateX(calc(50% + var(--testimonials-card-gap))); } +.testimonials__card--hidden-previous { + transform: translateX(calc(-250% - var(--testimonials-card-entry-gap))); +} + +.testimonials__card--hidden-next { + transform: translateX(calc(150% + var(--testimonials-card-entry-gap))); +} + .testimonials__name { font-family: var(--font-serif); font-weight: 500; From c58af4b7204983253b3abbc7e2cb8046480d267d Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 23:03:09 +0300 Subject: [PATCH 12/13] test preview corner radius --- frontend/rabbi_gerzi/cypress/e2e/home.cy.ts | 31 +++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts index 6f529ee..1b2adae 100644 --- a/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts +++ b/frontend/rabbi_gerzi/cypress/e2e/home.cy.ts @@ -285,6 +285,37 @@ describe('homepage testimonials carousel', () => { }) }) + it('rounds the outer corners of clipped preview cards', () => { + cy.viewport(1200, 800) + cy.get('[data-cy="testimonials"]').within(() => { + cy.get('[data-cy="testimonials-stage"]').as('testimonialStage') + cy.get('[data-cy="testimonial-active"]').as('activeCard') + }) + + cy.get('@activeCard').then((activeCardElements) => { + const activeCardStyle = getComputedStyle(activeCardElements[0]) + + cy.get('@testimonialStage').then((testimonialStageElements) => { + const testimonialStageStyle = getComputedStyle( + testimonialStageElements[0], + ) + + expect(testimonialStageStyle.borderTopLeftRadius).to.equal( + activeCardStyle.borderTopLeftRadius, + ) + expect(testimonialStageStyle.borderTopRightRadius).to.equal( + activeCardStyle.borderTopRightRadius, + ) + expect(testimonialStageStyle.borderBottomLeftRadius).to.equal( + activeCardStyle.borderBottomLeftRadius, + ) + expect(testimonialStageStyle.borderBottomRightRadius).to.equal( + activeCardStyle.borderBottomRightRadius, + ) + }) + }) + }) + it('brings entering side previews in from the clicked direction', () => { const transitionSampleDelay = 100 const transitionSettleDelay = 1100 From 0b972a67e338aa34527f8fc517a128a04d2c7c6a Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Sat, 6 Jun 2026 23:04:12 +0300 Subject: [PATCH 13/13] round preview card corners --- frontend/rabbi_gerzi/src/views/HomePage.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/rabbi_gerzi/src/views/HomePage.vue b/frontend/rabbi_gerzi/src/views/HomePage.vue index e1b0a81..32ae304 100644 --- a/frontend/rabbi_gerzi/src/views/HomePage.vue +++ b/frontend/rabbi_gerzi/src/views/HomePage.vue @@ -766,6 +766,7 @@ const projects: Project[] = [ position: relative; width: min(100%, var(--testimonials-stage-width)); height: var(--testimonials-card-height); + border-radius: 14px; margin: 0 auto; overflow: hidden; }