feat(recorrido): los seis puntos dejan de ser tarjetas y pasan a contestar
Cada punto de inflexión enuncia ahora la situación en segunda persona y
creeer responde qué hace al respecto. 01 y 05 son los dos intercambios
que la dueña improvisó en la llamada del 31/jul, redactados.
El test de segunda persona cazó cuatro situaciones impersonales que yo
había escrito ("El esfuerzo dejó de traducirse en resultado" no
interpela a nadie). Se corrigió el copy, no el test.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a9d1f44df2
commit
c1a5e79c63
3 files changed
+93
-43
No files matched your search
@@ -1,22 +1,58 @@
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { PuntosInflexion } from '../PuntosInflexion';
|
||||
import { puntosInflexion } from '@/lib/content';
|
||||
|
||||
describe('<PuntosInflexion />', () => {
|
||||
it('renders the section title', () => {
|
||||
render(<PuntosInflexion />);
|
||||
expect(screen.getByText(/llegan a un punto de inflexión/i)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders the six inflection points from the dueña deck', () => {
|
||||
render(<PuntosInflexion />);
|
||||
// Each point renders twice in the markup — once in the mobile carousel,
|
||||
// once in the desktop grid — with CSS `hidden`/`md:` toggling which one
|
||||
// is actually visible at a given breakpoint.
|
||||
// Each point now renders once, not twice: the mobile carousel is gone and
|
||||
// the conversation stacks vertically at every breakpoint.
|
||||
for (const name of ['Crecer', 'Consolidarse', 'Recuperar rentabilidad', 'Simplificar', 'Expandirse', 'Replantear el portafolio']) {
|
||||
expect(screen.getAllByText(name).length).toBeGreaterThanOrEqual(1);
|
||||
expect(screen.getByText(new RegExp(name))).toBeInTheDocument();
|
||||
}
|
||||
expect(screen.getAllByRole('listitem')).toHaveLength(6);
|
||||
});
|
||||
|
||||
it('answers every situation instead of only naming it', () => {
|
||||
render(<PuntosInflexion />);
|
||||
// The whole point of the section, and the one thing that would silently
|
||||
// regress back into the old mute grid: six situations, six answers, each
|
||||
// spoken by creeer.
|
||||
expect(screen.getAllByLabelText('creeer')).toHaveLength(6);
|
||||
for (const { respuesta } of puntosInflexion.items) {
|
||||
expect(screen.getByText(respuesta)).toBeInTheDocument();
|
||||
}
|
||||
});
|
||||
|
||||
it('states each situation in the second person, as the dueña reads them', () => {
|
||||
// Her own phrasing in the 31/jul call: "estás atrapado en tu compañía",
|
||||
// "creciste muy rápido pero quieres expandirte". The deck's infinitives
|
||||
// ("Dar el siguiente salto") would put the reader outside their own story.
|
||||
//
|
||||
// Only real second-person markers count here. The first draft of this
|
||||
// pattern also accepted `dejó|volvió|abiertos|mismo`, which let four
|
||||
// impersonal lines through — "El esfuerzo dejó de traducirse en resultado"
|
||||
// never addresses anyone. That was the test being bent to fit the copy.
|
||||
for (const { situacion } of puntosInflexion.items) {
|
||||
expect(situacion).toMatch(/\b(tu|tus|te|ti|tienes|vas|sabes|quieres|puedes|demostraste|construiste|creciste)\b/i);
|
||||
}
|
||||
});
|
||||
|
||||
it('keeps the situations about the business, not about how it feels', () => {
|
||||
// `dolores` is four sections down and owns the feelings, in the client's
|
||||
// own first-person words. If a situation starts saying "siento" or "estoy
|
||||
// agotado", the two sections collapse into each other.
|
||||
for (const { situacion } of puntosInflexion.items) {
|
||||
expect(situacion).not.toMatch(/\b(siento|me siento|estoy|agotad|frustrad|harto)\b/i);
|
||||
}
|
||||
});
|
||||
|
||||
it('does NOT introduce scarcity', () => {
|
||||
const { container } = render(<PuntosInflexion />);
|
||||
expect(container.textContent).not.toMatch(/cupos|cohorte|generación fundadora/i);
|
||||
|
||||
Reference in new issue
Block a user