diff --git a/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-details.php b/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-details.php
index b7815f3d48..734993ad90 100644
--- a/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-details.php
+++ b/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/templates/event-details.php
@@ -109,7 +109,7 @@ function ( $host ) {
- id() ) ) : ?>
+ is_past() && current_user_can( 'edit_translation_event', $event->id() ) ) : ?>
event_factory = new Event_Factory();
+
+ wp_set_current_user( $this->factory->user->create() );
+ add_filter( 'gp_translation_events_can_crud_event', '__return_true' );
+ }
+
+ /**
+ * Remove the capability filter.
+ *
+ * @return void
+ */
+ public function tearDown(): void {
+ remove_filter( 'gp_translation_events_can_crud_event', '__return_true' );
+ parent::tearDown();
+ }
+
+ /**
+ * The attendees section is shown while the event is active.
+ *
+ * @return void
+ */
+ public function test_shows_attendees_for_active_event() {
+ $event_id = $this->event_factory->create_active( $this->now, array( $this->factory->user->create() ) );
+
+ $this->assertStringContainsString( 'event-attendees', $this->render_event_details( $event_id ) );
+ }
+
+ /**
+ * The attendees section is hidden once the event has ended.
+ *
+ * @return void
+ */
+ public function test_hides_attendees_for_past_event() {
+ $event_id = $this->event_factory->create_inactive_past( $this->now, array( $this->factory->user->create() ) );
+
+ $this->assertStringNotContainsString( 'event-attendees', $this->render_event_details( $event_id ) );
+ }
+
+ /**
+ * Render the details route for an event and return the generated HTML.
+ *
+ * @param int $event_id Event to render.
+ * @return string
+ */
+ private function render_event_details( int $event_id ): string {
+ wp_cache_flush();
+
+ $route = new Details_Route();
+ $route->fake_request = true;
+
+ ob_start();
+ $route->handle( get_post( $event_id )->post_name );
+ return (string) ob_get_clean();
+ }
+}
diff --git a/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/event-details/render.php b/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/event-details/render.php
index 9dcd41edff..b979317582 100644
--- a/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/event-details/render.php
+++ b/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/themes/wporg-translate-events-2024/blocks/pages/events/event-details/render.php
@@ -52,17 +52,19 @@
+is_past() ) : ?>
+