Update meeting points

This commit is contained in:
Sylvain Duchesne
2026-01-26 17:20:33 +01:00
parent 21f33faf4a
commit 3fb60388fb
6 changed files with 714 additions and 675 deletions
+13 -5
View File
@@ -382,7 +382,7 @@ export const parsedFeatures: ParsedFeature[] = [
]
},
{
"name": "Créer un point de rencontre",
"name": "Voir le bouton pour proposer un point de rencontre",
"tags": [],
"steps": [
{
@@ -391,21 +391,25 @@ export const parsedFeatures: ParsedFeature[] = [
},
{
"keyword": "Alors",
"text": "l'écran contient un bouton \"Créer le point de rencontre\""
"text": "l'écran contient un bouton \"Proposer un point de rencontre\""
}
]
},
{
"name": "Définir le lieu de rencontre",
"name": "Ouvrir le formulaire de proposition",
"tags": [],
"steps": [
{
"keyword": "Étant donné que ",
"text": "je suis sur la page \"points de rencontre\""
},
{
"keyword": "Quand",
"text": "je clique sur \"Proposer un point de rencontre\""
},
{
"keyword": "Alors",
"text": "l'écran contient une section \"Proposer un point de rencontre\""
"text": "l'écran contient un bouton \"Créer le point de rencontre\""
},
{
"keyword": "Et",
@@ -421,6 +425,10 @@ export const parsedFeatures: ParsedFeature[] = [
"keyword": "Étant donné que ",
"text": "je suis sur la page \"points de rencontre\""
},
{
"keyword": "Quand",
"text": "je clique sur \"Proposer un point de rencontre\""
},
{
"keyword": "Alors",
"text": "l'écran contient un bouton \"30 min avant\""
@@ -437,7 +445,7 @@ export const parsedFeatures: ParsedFeature[] = [
}
],
"filePath": "features/meeting/us-16-point-rencontre.feature",
"rawContent": "# language: fr\n@MEETING @priority-1\nFonctionnalité: US-16 Indiquer un ou plusieurs points de rencontre\n En tant qu'utilisateur\n Je peux indiquer un ou plusieurs points de rencontre\n En précisant le lieu et l'heure de cette rencontre\n Afin de croiser et faire connaissance d'autres participants\n\n Contexte:\n Étant donné que je suis connecté en tant qu'utilisateur\n\n Scénario: Accéder aux points de rencontre\n Étant donné que je suis sur la page \"détail événement\"\n Quand je navigue vers \"points de rencontre\"\n Alors je vois l'écran \"meeting-points\"\n\n Scénario: Créer un point de rencontre\n Étant donné que je suis sur la page \"points de rencontre\"\n Alors l'écran contient un bouton \"Créer le point de rencontre\"\n\n Scénario: Définir le lieu de rencontre\n Étant donné que je suis sur la page \"points de rencontre\"\n Alors l'écran contient une section \"Proposer un point de rencontre\"\n Et l'écran contient un champ \"Lieu\"\n\n Scénario: Définir l'heure de rencontre\n Étant donné que je suis sur la page \"points de rencontre\"\n Alors l'écran contient un bouton \"30 min avant\"\n Et l'écran contient un bouton \"1h avant\"\n Et l'écran contient un bouton \"Personnalisé\"\n",
"rawContent": "# language: fr\n@MEETING @priority-1\nFonctionnalité: US-16 Indiquer un ou plusieurs points de rencontre\n En tant qu'utilisateur\n Je peux indiquer un ou plusieurs points de rencontre\n En précisant le lieu et l'heure de cette rencontre\n Afin de croiser et faire connaissance d'autres participants\n\n Contexte:\n Étant donné que je suis connecté en tant qu'utilisateur\n\n Scénario: Accéder aux points de rencontre\n Étant donné que je suis sur la page \"détail événement\"\n Quand je navigue vers \"points de rencontre\"\n Alors je vois l'écran \"meeting-points\"\n\n Scénario: Voir le bouton pour proposer un point de rencontre\n Étant donné que je suis sur la page \"points de rencontre\"\n Alors l'écran contient un bouton \"Proposer un point de rencontre\"\n\n Scénario: Ouvrir le formulaire de proposition\n Étant donné que je suis sur la page \"points de rencontre\"\n Quand je clique sur \"Proposer un point de rencontre\"\n Alors l'écran contient un bouton \"Créer le point de rencontre\"\n Et l'écran contient un champ \"Lieu\"\n\n Scénario: Définir l'heure de rencontre\n Étant donné que je suis sur la page \"points de rencontre\"\n Quand je clique sur \"Proposer un point de rencontre\"\n Alors l'écran contient un bouton \"30 min avant\"\n Et l'écran contient un bouton \"1h avant\"\n Et l'écran contient un bouton \"Personnalisé\"\n",
"screenIds": [
"event-detail",
"meeting-points"
+28 -28
View File
@@ -19,7 +19,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 4,
"failed": 0,
"skipped": 3,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder au formulaire de relai d'événement",
@@ -57,7 +57,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 3,
"failed": 0,
"skipped": 0,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder aux détails d'un événement terminé",
@@ -79,7 +79,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 5,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Voir les commentaires existants",
@@ -109,7 +109,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 2,
"failed": 0,
"skipped": 4,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Consulter un événement avant inscription",
@@ -143,7 +143,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 8,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Consulter un macro-événement",
@@ -185,18 +185,18 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 4,
"failed": 0,
"skipped": 0,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder aux points de rencontre",
"status": "passed"
},
{
"name": "Créer un point de rencontre",
"name": "Voir le bouton pour proposer un point de rencontre",
"status": "passed"
},
{
"name": "Définir le lieu de rencontre",
"name": "Ouvrir le formulaire de proposition",
"status": "passed"
},
{
@@ -211,7 +211,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 5,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Partager un événement auquel je participe",
@@ -241,7 +241,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 1,
"failed": 0,
"skipped": 3,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Configurer les notifications de nouveaux participants",
@@ -267,7 +267,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 3,
"failed": 0,
"skipped": 2,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Voir les événements à venir sur l'accueil",
@@ -297,7 +297,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 4,
"failed": 0,
"skipped": 1,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder au profil d'un participant",
@@ -327,7 +327,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 3,
"failed": 0,
"skipped": 4,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder à la liste des événements depuis le profil",
@@ -365,7 +365,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 3,
"failed": 0,
"skipped": 2,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder à la liste des inscrits d'un événement",
@@ -395,7 +395,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 5,
"failed": 0,
"skipped": 1,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder à mon profil",
@@ -429,7 +429,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 2,
"failed": 0,
"skipped": 3,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder aux paramètres de profil",
@@ -459,7 +459,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 5,
"failed": 0,
"skipped": 0,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder au partage de profil",
@@ -489,7 +489,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 5,
"failed": 0,
"skipped": 0,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder au partage depuis le profil",
@@ -519,7 +519,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 2,
"failed": 0,
"skipped": 1,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder aux paramètres de notification",
@@ -541,7 +541,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 1,
"failed": 0,
"skipped": 2,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder aux paramètres de notification",
@@ -563,7 +563,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 3,
"failed": 0,
"skipped": 1,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder au formulaire de relai d'événement",
@@ -589,7 +589,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 4,
"failed": 0,
"skipped": 1,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder au profil pour voir la photo",
@@ -619,7 +619,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 5,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder aux détails d'un événement terminé",
@@ -649,7 +649,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 3,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder au bilan consolidé",
@@ -671,7 +671,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 7,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder à la création d'atelier",
@@ -709,7 +709,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 5,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Accéder à la zone de notes personnelles",
@@ -739,7 +739,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 5,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Voir les commentaires existants d'un atelier",
@@ -769,7 +769,7 @@ const rawResults: RawFeatureTestStatus[] = [
"passed": 0,
"failed": 0,
"skipped": 4,
"lastRun": "2026-01-26T14:56:32.333Z",
"lastRun": "2026-01-26T16:19:06.437Z",
"scenarios": [
{
"name": "Voir les ateliers d'un événement",
+34 -31
View File
@@ -1,22 +1,21 @@
import React from 'react';
import React, { useState } from 'react';
import { Header, Text, Button, Card, Avatar, Input, Divider } from '../components/sketchy';
import type { ScreenProps } from './index';
export function MeetingPointsScreen({ navigate }: ScreenProps) {
const [showForm, setShowForm] = useState(false);
const meetingPoints = [
{
id: '1',
location: 'Café de la Place',
time: '30 min avant l\'événement',
host: { initials: 'MD', name: 'Marie' },
participants: 3,
},
{
id: '2',
location: 'Station de métro Bellecour',
time: '15h30',
host: { initials: 'JD', name: 'Jean' },
participants: 5,
},
];
@@ -30,7 +29,7 @@ export function MeetingPointsScreen({ navigate }: ScreenProps) {
{/* Content */}
<div style={{ flex: 1, overflow: 'auto', padding: 16 }}>
<Text style={{ color: 'var(--sketch-gray)', marginBottom: 16 }}>
Retrouvez d'autres participants avant l'événement pour y aller ensemble !
Proposez un lieu de rendez-vous pour y aller ensemble !
</Text>
{/* Existing meeting points */}
@@ -43,42 +42,46 @@ export function MeetingPointsScreen({ navigate }: ScreenProps) {
<Text style={{ margin: '4px 0', fontSize: 14, color: 'var(--sketch-gray)' }}>
<span className="user-content">{mp.time}</span> · Proposé par <span className="user-content">{mp.host.name}</span>
</Text>
<Text style={{ margin: 0, fontSize: 13 }}>
{mp.participants} participant{mp.participants > 1 ? 's' : ''} inscrit{mp.participants > 1 ? 's' : ''}
</Text>
</div>
</div>
<div style={{ display: 'flex', gap: 8, marginTop: 12 }}>
<Button variant="primary" style={{ flex: 1 }}>Rejoindre</Button>
<Button style={{ flex: 1 }}>Voir les participants</Button>
</div>
</Card>
))}
<Divider />
{/* Create new meeting point */}
<Text style={{ fontWeight: 'bold', marginBottom: 12 }}>Proposer un point de rencontre</Text>
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
<div>
<Text style={{ marginBottom: 6, fontSize: 14 }}>Lieu</Text>
<Input placeholder="Ex: Café de la Gare, Entrée du parc..." />
</div>
<div>
<Text style={{ marginBottom: 6, fontSize: 14 }}>Heure</Text>
<div style={{ display: 'flex', gap: 8 }}>
<Button style={{ flex: 1 }}>30 min avant</Button>
<Button variant="primary" style={{ flex: 1 }}>1h avant</Button>
<Button style={{ flex: 1 }}>Personnalisé</Button>
</div>
</div>
<Button variant="primary" style={{ marginTop: 8 }}>
Créer le point de rencontre
{!showForm ? (
<Button variant="primary" style={{ width: '100%' }} onClick={() => setShowForm(true)}>
+ Proposer un point de rencontre
</Button>
</div>
) : (
<>
<Text style={{ fontWeight: 'bold', marginBottom: 12 }}>Proposer un point de rencontre</Text>
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
<div>
<Text style={{ marginBottom: 6, fontSize: 14 }}>Lieu</Text>
<Input placeholder="Ex: Café de la Gare, Entrée du parc..." />
</div>
<div>
<Text style={{ marginBottom: 6, fontSize: 14 }}>Heure</Text>
<div style={{ display: 'flex', gap: 8 }}>
<Button style={{ flex: 1 }}>30 min avant</Button>
<Button variant="primary" style={{ flex: 1 }}>1h avant</Button>
<Button style={{ flex: 1 }}>Personnalisé</Button>
</div>
</div>
<div style={{ display: 'flex', gap: 8, marginTop: 8 }}>
<Button style={{ flex: 1 }} onClick={() => setShowForm(false)}>Annuler</Button>
<Button variant="primary" style={{ flex: 1 }}>
Créer le point de rencontre
</Button>
</div>
</div>
</>
)}
</div>
</div>