feat(secciones): puntos de inflexión y dolores, con gráfico en toda la página
Dos secciones nuevas tomadas del deck de la dueña, verbatim y sin reescribir: los 6 puntos de inflexión y los 4 dolores en primera persona. El resto de las secciones incorpora la capa gráfica: fondos de puntos, duotono sobre foto en Mecanismo y Cómo empezar, pantalla partida sí/no en Para quién, y pasos conectados con línea de progreso. Las fotos son CC BY-SA 4.0 y llevan crédito en el footer, como exige la licencia al haberlas modificado. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5b400cb161
commit
69b4069525
25 files changed
+592
-120
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { render, screen, act } from '@testing-library/react';
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
||||
import { ComoEmpezar } from '../ComoEmpezar';
|
||||
|
||||
describe('<ComoEmpezar />', () => {
|
||||
@@ -15,4 +15,26 @@ describe('<ComoEmpezar />', () => {
|
||||
expect(href).toMatch(/^https:\/\/wa\.me\//);
|
||||
expect(href).toContain('text=');
|
||||
});
|
||||
it('renders the sunrise photo panel as decorative, not real content', () => {
|
||||
const { container } = render(<ComoEmpezar />);
|
||||
const img = container.querySelector('img');
|
||||
// next/image rewrites `src` through its loader in this test environment;
|
||||
// the static export (images.unoptimized: true) serves the plain path.
|
||||
expect(img?.getAttribute('src')).toContain('comoempezar-bg.jpg');
|
||||
expect(img).toHaveAttribute('alt', '');
|
||||
});
|
||||
|
||||
describe('auto-advancing step highlight', () => {
|
||||
beforeEach(() => { vi.useFakeTimers(); });
|
||||
afterEach(() => { vi.useRealTimers(); });
|
||||
|
||||
it('highlights the first step by default, then advances on its own', () => {
|
||||
render(<ComoEmpezar />);
|
||||
const first = screen.getByText('Escríbeme').closest('button');
|
||||
const second = screen.getByText('Sesión de diagnóstico').closest('button');
|
||||
expect(first).toHaveAttribute('aria-pressed', 'true');
|
||||
act(() => { vi.advanceTimersByTime(3300); });
|
||||
expect(second).toHaveAttribute('aria-pressed', 'true');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user