# openproj CI durations, measured not estimated
#
# Run:     https://github.com/jcanton/openproj/actions/runs/32631287159
# Job:     check, ubuntu-latest, 2026-08-23T09:32:35Z -> 2026-08-23T09:55:59Z (1404s)
# Commit:  4e43723 on branch ci-speed (PR #72), tree identical to main at 5a09f6d
#          apart from the pytest flags below.
# Command: uv run pytest -q --durations=0 --durations-min=0.05
# Result:  1687 passed, 5 warnings in 1392.75s (0:23:12)
#
# Per-step wall clock from the jobs API (seconds, 1s granularity):
#   Set up job                 1
#   actions/checkout@v7        1
#   astral-sh/setup-uv@v10.0.1 2
#   actions/setup-node@v7      1
#   uv sync --locked           0
#   uv run ruff check .        0
#   uv run pytest           1395
#   post steps + complete      0
# Nine seconds of the twenty-three minutes is not pytest.
#
# The table below is verbatim from the run log, timestamps stripped. 3954 further
# durations under 0.05s are hidden by --durations-min and are not in it; the 1052
# rows here sum to 1285.11s of the 1392.75s pytest reported, so about 108s is
# collection, imports, and the sub-50ms tail.
#
# Phase split of those 1052 rows: setup 519.23s, call 745.05s, teardown 20.83s.

============================== slowest durations ===============================
94.13s setup    tests/test_injection.py::test_no_marker_string_reaches_a_served_page_as_anything_but_text
88.97s setup    tests/test_injection.py::test_no_marker_string_reaches_a_static_page_as_anything_but_text
30.03s call     tests/test_render.py::test_a_bar_is_exactly_as_wide_as_the_span_the_scheduler_computed
16.96s call     tests/test_render.py::test_the_box_each_view_fills_stops_where_the_window_does[graph]
16.33s call     tests/test_search.py::test_the_box_and_the_server_find_the_same_records
14.08s call     tests/test_card.py::test_the_three_views_draw_the_same_card
13.54s call     tests/test_render.py::test_the_current_nav_item_is_drawn_and_not_merely_resolved
10.55s call     tests/test_render.py::test_the_box_each_view_fills_stops_where_the_window_does[table]
9.98s call     tests/test_deck.py::test_every_deck_this_suite_can_reach_prints_one_slide_to_a_page
9.18s call     tests/test_editor.py::test_the_editor_a_person_chose_is_carried_back_into_the_address
8.95s call     tests/test_render.py::test_the_box_each_view_fills_stops_where_the_window_does[timeline]
8.83s call     tests/test_table.py::test_the_frozen_edge_is_a_pixel_a_browser_draws
7.35s call     tests/test_render.py::test_the_heading_costs_the_view_no_row[graph]
5.96s setup    tests/test_injection.py::test_no_served_page_lets_a_field_become_markup
5.91s call     tests/test_facets.py::test_an_open_menu_is_not_painted_over[graph]
5.52s call     tests/test_hill.py::test_the_ball_is_painted_where_the_geometry_says
5.31s call     tests/test_coedit.py::test_two_editors_in_one_room_over_a_body_with_crlf_in_it_settle_on_one_document
5.12s call     tests/test_coedit.py::test_one_member_who_stops_reading_freezes_nobody
5.09s teardown tests/test_coedit.py::test_a_commit_never_deletes_what_was_typed_during_it
5.05s teardown tests/test_coedit.py::test_a_room_emptied_by_an_eviction_is_still_committed
5.04s teardown tests/test_coedit.py::test_one_member_who_stops_reading_freezes_nobody
5.02s teardown tests/test_coedit.py::test_what_is_held_for_a_member_who_never_reads_is_bounded
5.00s call     tests/test_editor.py::test_the_keymap_a_person_chose_is_the_one_the_next_session_opens_in
4.82s call     tests/test_editor.py::test_a_link_to_the_split_view_opens_in_the_split_view
4.75s call     tests/test_editor.py::test_the_split_dragged_to_the_end_on_a_wide_screen_is_the_one_that_comes_back[3440]
4.60s call     tests/test_graph_layout.py::test_two_boxes_that_wait_on_each_other_are_ranked_by_the_majority
4.59s call     tests/test_delete.py::test_the_delete_under_a_record_is_the_delete_of_that_record
4.41s call     tests/test_graph_layout.py::test_the_grouping_holds_on_a_plan_larger_than_the_real_one
4.35s call     tests/test_graph_layout.py::test_an_edge_that_crosses_a_card_is_drawn_under_it
4.33s setup    tests/test_graph_layout.py::test_a_records_children_are_drawn_near_it
4.21s setup    tests/test_graph_layout.py::test_no_card_is_drawn_inside_a_group_it_does_not_belong_to
4.19s call     tests/test_graph_layout.py::test_a_card_wears_both_its_marks_in_front_of_its_name
4.16s call     tests/test_coedit.py::test_a_commit_never_deletes_what_was_typed_during_it
4.16s call     tests/test_render.py::test_the_heading_costs_the_view_no_row[table]
4.16s call     tests/test_facets.py::test_an_open_menu_is_not_painted_over[table]
4.14s call     tests/test_render.py::test_a_reader_who_asked_for_less_motion_gets_none_of_the_motion_there_is
4.13s call     tests/test_editor.py::test_the_split_dragged_to_the_end_on_a_wide_screen_is_the_one_that_comes_back[1400]
4.09s call     tests/test_coedit.py::test_a_room_emptied_by_an_eviction_is_still_committed
4.07s call     tests/test_editor.py::test_a_view_link_is_sessionless_and_a_both_link_opens_a_session
4.05s call     tests/test_graph_layout.py::test_a_card_stays_where_it_was_dragged
4.04s call     tests/test_graph_layout.py::test_the_two_key_rows_are_one_length_and_sit_on_the_drawing
4.04s call     tests/test_coedit.py::test_a_socket_re_reads_the_session_it_was_opened_with
4.03s call     tests/test_editor.py::test_the_pane_splitter_takes_a_focus_ring_that_is_actually_painted
3.99s setup    tests/test_graph_layout.py::test_the_arrows_read_the_way_the_layout_was_asked_for
3.97s setup    tests/test_graph_layout.py::test_the_corpus_is_worth_measuring
3.96s setup    tests/test_graph_layout.py::test_no_box_lies_across_another
3.94s call     tests/test_facets.py::test_an_open_menu_is_not_painted_over[timeline]
3.92s call     tests/test_editor.py::test_the_editor_switch_takes_a_focus_ring_that_is_actually_painted
3.91s call     tests/test_themes.py::test_the_drawing_gets_colours_it_can_actually_read
3.75s call     tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[graph]
3.74s call     tests/test_edges.py::test_reset_and_leaving_the_mode_both_put_a_marked_edge_back
3.60s call     tests/test_search.py::test_the_language_is_evaluated_the_same_in_the_browser
3.58s call     tests/test_card.py::test_a_box_answers_for_its_label_and_not_for_its_acres
3.56s call     tests/test_edges.py::test_an_existing_dependency_can_be_taken_off_the_diagram
3.49s call     tests/test_render.py::test_the_heading_costs_the_view_no_row[timeline]
3.33s call     tests/test_edges.py::test_an_edge_drawn_by_mistake_is_simply_undrawn
3.30s call     tests/test_edges.py::test_an_edge_edit_is_refused_where_it_would_delete_a_hand_written_line
3.19s call     tests/test_editor.py::test_the_view_a_person_chose_is_the_one_the_next_session_opens_in
3.16s call     tests/test_render.py::test_a_sentence_about_the_view_never_costs_the_view_a_row[graph]
3.12s call     tests/test_render.py::test_a_window_that_changes_under_an_open_page_is_measured_again
3.10s setup    tests/test_injection.py::test_adding_somebody_to_a_cycle_does_not_let_the_name_become_markup
3.02s setup    tests/test_injection.py::test_the_combobox_popup_does_not_let_a_suggestion_become_markup[one entity 0]
2.98s setup    tests/test_injection.py::test_the_combobox_popup_does_not_let_a_suggestion_become_markup[new task]
2.97s setup    tests/test_injection.py::test_adding_somebody_whose_name_holds_a_quote_does_not_break_the_button
2.97s setup    tests/test_injection.py::test_the_combobox_popup_does_not_let_a_suggestion_become_markup[cycle 41]
2.97s setup    tests/test_injection.py::test_the_table_cell_editor_does_not_let_a_stored_value_become_markup
2.96s setup    tests/test_injection.py::test_the_table_draws_its_rows_without_letting_a_field_become_markup
2.96s setup    tests/test_injection.py::test_the_hover_card_does_not_let_a_field_become_markup
2.96s setup    tests/test_injection.py::test_the_combobox_popup_does_not_let_a_suggestion_become_markup[table]
2.79s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a config file whose YAML never closes]
2.74s call     tests/test_delete.py::test_the_commit_bar_is_not_on_screen_when_there_is_nothing_to_commit
2.73s call     tests/test_coedit.py::test_what_is_held_for_a_member_who_never_reads_is_bounded
2.71s call     tests/test_injection.py::test_no_marker_string_reaches_a_served_page_as_anything_but_text
2.70s call     tests/test_coedit.py::test_backspacing_a_whole_glyph_in_the_second_surface_leaves_both_copies_agreeing[one \U0001f600\n]
2.69s call     tests/test_coedit.py::test_a_tab_that_is_only_watching_the_second_surface_is_credited_zero_characters
2.69s call     tests/test_editor.py::test_the_width_handle_finds_the_pane_in_every_view
2.65s call     tests/test_hill.py::test_a_cancelled_drag_puts_the_ball_back
2.65s call     tests/test_editor.py::test_the_toolbar_and_the_keymap_do_not_cancel_each_other
2.64s call     tests/test_editor.py::test_the_history_buttons_reach_the_second_editors_own_stack
2.63s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[an assigned_on that is a phrase]
2.63s call     tests/test_seats.py::test_a_seat_band_lands_on_the_right_line_at_a_width_that_wraps
2.62s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a project file that is empty]
2.62s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a schema_version that is a word]
2.62s call     tests/test_coedit.py::test_a_substitution_over_a_whole_document_is_announced_before_it_is_sent
2.61s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a frontmatter that is a list rather than a map]
2.61s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a task file with no frontmatter at all]
2.61s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a task file whose YAML never closes its flow sequence]
2.61s call     tests/test_editor.py::test_every_line_number_sits_on_the_line_it_numbers
2.61s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a file with no kind, whose id names no kind either]
2.61s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a pitch whose reviewers are a map]
2.61s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a size that is a word]
2.60s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a holiday that is not a date]
2.60s setup    tests/test_render.py::test_the_nav_says_which_page_you_are_on
2.60s call     tests/test_editor.py::test_the_editor_switch_says_which_editor_it_is_and_that_it_reloads[-True]
2.60s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a cycle record whose YAML never closes]
2.60s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a record filed one directory deeper than records live]
2.60s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a cycle number that is a word]
2.60s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a cycle record with no start date]
2.60s call     tests/test_seats.py::test_the_second_surface_says_it_cannot_draw_where_anybody_is
2.60s call     tests/test_injection.py::test_the_json_a_page_ships_reads_back_and_can_end_nothing
2.59s call     tests/test_gitdoor.py::test_a_file_nobody_could_parse_costs_that_file_and_nothing_else[a task whose frontmatter is only a comment]
2.59s call     tests/test_coedit.py::test_opening_the_second_surface_changes_no_byte_of_the_document
2.58s call     tests/test_editor.py::test_every_button_on_the_toolbar_can_be_reached_at_a_window_that_is_not_wide[1000-note]
2.57s call     tests/test_delete.py::test_a_refusal_is_shown_where_the_question_was_asked
2.56s call     tests/test_coedit.py::test_backspacing_a_whole_glyph_in_the_second_surface_leaves_both_copies_agreeing[one \U0001f1e9\U0001f1ea\n]
2.56s call     tests/test_editor.py::test_no_editor_asks_for_a_script_after_the_page_has_loaded
2.55s call     tests/test_delete.py::test_it_takes_two_presses_and_the_first_one_writes_nothing
2.55s call     tests/test_coedit.py::test_backspacing_a_whole_glyph_in_the_second_surface_leaves_both_copies_agreeing[one \U0001f469\u200d\U0001f469\u200d\U0001f467\n]
2.55s call     tests/test_coedit.py::test_an_edit_in_the_second_surface_reaches_the_room_as_the_character_it_was[a fine result\n-a fine \U0001f389 result\n]
2.53s call     tests/test_hill.py::test_cancelling_an_edit_rolls_the_ball_back
2.52s call     tests/test_coedit.py::test_an_edit_in_the_second_surface_reaches_the_room_as_the_character_it_was[\U0001f1e9\U0001f1ea\n-\U0001f1e9\U0001f1eb\n]
2.51s call     tests/test_coedit.py::test_an_edit_in_the_second_surface_reaches_the_room_as_the_character_it_was[\U0001f44d done\n-\U0001f44e done\n]
2.51s call     tests/test_editor.py::test_the_second_surface_holds_one_line_ending_whatever_is_pasted_into_it
2.51s call     tests/test_editor.py::test_the_three_views_are_one_of_three_and_each_pane_scrolls_on_its_own
2.51s call     tests/test_coedit.py::test_an_edit_in_the_second_surface_reaches_the_room_as_the_character_it_was[\U0001f916 written by an agent\n-\U0001f916 written by somebody\n]
2.48s call     tests/test_hill.py::test_pressing_a_stop_moves_the_ball_and_the_form
2.48s call     tests/test_hill.py::test_the_hill_takes_a_keyboard
2.46s call     tests/test_coedit.py::test_an_edit_in_the_second_surface_reaches_the_room_as_the_character_it_was[\U0001f600\U0001f601 ok\n-\U0001f601 ok\n]
2.45s call     tests/test_hill.py::test_dragging_the_ball_lands_on_a_stop
2.44s call     tests/test_editor.py::test_cancelling_an_edit_nobody_made_says_nothing
2.44s call     tests/test_editor.py::test_the_length_says_the_ceiling_before_a_save_is_refused
2.43s call     tests/test_themes.py::test_every_scheme_is_readable_where_the_page_paints_it
2.42s call     tests/test_themes.py::test_the_picker_puts_the_scheme_on_the_page_and_takes_it_off_again
2.42s call     tests/test_editor.py::test_the_split_a_reader_chose_is_there_the_next_time[400-False]
2.42s call     tests/test_editor.py::test_escape_still_arms_the_tab_hatch_where_the_box_is_on_the_page
2.41s call     tests/test_editor.py::test_every_button_on_the_toolbar_can_be_reached_at_a_window_that_is_not_wide[1000-detail]
2.41s call     tests/test_coedit.py::test_the_history_buttons_answer_the_keyboard_and_say_when_a_stack_is_empty
2.40s call     tests/test_coedit.py::test_undo_never_takes_back_something_somebody_else_typed
2.40s call     tests/test_editor.py::test_every_button_on_the_toolbar_can_be_reached_at_a_window_that_is_not_wide[500-note]
2.39s call     tests/test_editor.py::test_the_theme_toggle_and_the_way_in_come_into_the_surface_with_you
2.38s call     tests/test_table.py::test_the_create_button_is_reachable_from_anywhere_in_the_form
2.38s call     tests/test_hill.py::test_the_ball_follows_the_field_when_something_else_sets_it
2.37s call     tests/test_delete.py::test_delete_leaves_while_an_edit_is_open
2.37s call     tests/test_table.py::test_the_draft_rows_marks_are_drawn
2.36s call     tests/test_card.py::test_a_nine_hundred_word_document_does_not_cover_the_table
2.35s call     tests/test_editor.py::test_the_second_editors_caret_is_reported_when_it_moves_and_not_when_it_types
2.35s call     tests/test_editor.py::test_the_facts_column_does_not_move_when_the_join_between_the_panes_does
2.34s call     tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[detail]
2.33s call     tests/test_editor.py::test_the_new_marks_write_blocks_and_a_pasted_url_becomes_the_link_it_is[1200]
2.31s call     tests/test_table.py::test_the_column_control_opens_the_column_and_closes_it
2.31s setup    tests/test_render.py::test_a_cycle_bet_into_by_somebody_off_the_roster_is_not_counted_short
2.30s call     tests/test_editor.py::test_choosing_a_template_leaves_the_numbers_and_the_length_telling_the_truth
2.30s call     tests/test_editor.py::test_cancel_puts_the_fields_back
2.29s call     tests/test_facets.py::test_two_values_of_one_field_mean_either
2.29s call     tests/test_card.py::test_a_pointer_passing_over_a_row_does_not_open_a_card
2.29s call     tests/test_card.py::test_one_card_holds_one_document
2.29s call     tests/test_editor.py::test_the_separator_hands_back_every_key_that_carries_a_modifier
2.28s call     tests/test_editor.py::test_a_stored_legacy_view_mode_opens_the_next_session_in_edit
2.28s call     tests/test_seats.py::test_the_room_draws_a_band_where_somebody_else_is
2.28s call     tests/test_editor.py::test_the_history_buttons_use_the_browsers_own_stack_when_there_is_no_room
2.28s call     tests/test_seats.py::test_the_next_session_is_one_seat_not_two
2.28s call     tests/test_card.py::test_the_card_can_be_reached_and_stays_while_the_pointer_is_in_it
2.28s call     tests/test_coedit.py::test_a_carriage_return_in_a_room_is_a_thing_the_box_cannot_hold
2.27s call     tests/test_editor.py::test_cancel_leaves_the_surface_it_was_pressed_in
2.27s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_through_the_adapter[a fine result\n-a fine \U0001f389 result\n]
2.27s call     tests/test_facets.py::test_the_way_out_appears_only_when_there_is_one
2.27s call     tests/test_seats.py::test_two_people_get_two_colours_and_two_places
2.26s call     tests/test_card.py::test_a_card_at_the_edge_of_the_window_stays_inside_it
2.26s call     tests/test_seats.py::test_nobody_is_drawn_a_band_for_themselves
2.26s call     tests/test_editor.py::test_the_editor_preference_is_one_key_and_survives_a_browser_that_refuses_storage
2.25s call     tests/test_facets.py::test_the_closed_control_says_what_is_set
2.24s call     tests/test_facets.py::test_clearing_puts_every_field_back
2.23s call     tests/test_editor.py::test_the_two_panes_scroll_to_the_same_line
2.23s call     tests/test_editor.py::test_cancel_with_a_divergent_draft_lands_on_the_stored_commit
2.23s call     tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[create]
2.23s call     tests/test_coedit.py::test_undo_in_a_room_gives_back_your_own_last_thing_on_the_textarea
2.22s call     tests/test_editor.py::test_a_connection_that_drops_leaves_no_placeholder_and_no_sentence_that_is_still_true
2.22s call     tests/test_table.py::test_an_expanded_column_is_a_way_of_reading_and_not_a_setting
2.22s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_through_the_adapter[\U0001f1e9\U0001f1ea\n-\U0001f1e9\U0001f1eb\n]
2.22s call     tests/test_editor.py::test_every_button_on_the_toolbar_can_be_reached_at_a_window_that_is_not_wide[500-detail]
2.22s call     tests/test_editor.py::test_a_throttled_draft_is_still_written_before_the_tab_can_be_closed
2.22s call     tests/test_themes.py::test_a_scheme_reaches_the_boxes_people_type_into
2.21s call     tests/test_editor.py::test_ending_a_session_leaves_the_surface_by_every_door
2.21s call     tests/test_card.py::test_the_card_arrives_in_one_piece
2.21s call     tests/test_coedit.py::test_a_restored_draft_survives_the_welcome_and_is_offered_to_the_room
2.21s call     tests/test_table.py::test_a_column_too_narrow_for_its_word_keeps_its_mark
2.20s call     tests/test_editor.py::test_the_new_marks_write_blocks_and_a_pasted_url_becomes_the_link_it_is[1000]
2.20s setup    tests/test_render.py::test_pull_requests_are_offered_newest_first
2.20s call     tests/test_coedit.py::test_a_draft_against_a_room_that_has_moved_is_reported_and_not_thrown_away
2.20s call     tests/test_card.py::test_the_document_is_drawn_under_the_fields
2.19s setup    tests/test_render.py::test_the_parent_reads_as_a_title_and_edits_as_an_id
2.19s setup    tests/test_render.py::test_the_hatching_says_in_words_what_it_says_in_texture
2.19s call     tests/test_editor.py::test_the_full_page_surface_is_a_writing_surface_at_a_window_that_is_not_wide[new]
2.19s call     tests/test_editor.py::test_a_static_page_opens_no_event_stream
2.19s call     tests/test_editor.py::test_the_preview_keeps_up_and_stays_where_the_reader_left_it
2.19s call     tests/test_facets.py::test_the_server_answers_the_same_two_values
2.19s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_through_the_adapter[\U0001f600\U0001f601 ok\n-\U0001f601 ok\n]
2.18s call     tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[table]
2.18s call     tests/test_headers.py::test_the_static_export_carries_it_because_it_has_no_server
2.18s call     tests/test_seats.py::test_this_tab_says_where_it_is_sitting
2.18s setup    tests/test_render.py::test_the_cycles_index_lists_every_cycle_the_plan_names
2.18s setup    tests/test_render.py::test_weeks_bet_into_another_cycle_are_counted_beside_this_one
2.18s setup    tests/test_render.py::test_a_pr_reference_completes_in_two_halves
2.17s call     tests/test_notes.py::test_the_static_export_carries_every_note
2.17s setup    tests/test_render.py::test_one_capacity_formula_answers_both_cycle_pages
2.17s setup    tests/test_render.py::test_a_new_cycle_still_has_a_roster_to_set_availability_against
2.17s setup    tests/test_render.py::test_the_detail_page_links_dependencies_both_ways
2.17s setup    tests/test_render.py::test_a_size_is_split_evenly_between_the_people_on_it
2.17s setup    tests/test_render.py::test_the_line_that_says_a_bet_does_not_fit_is_drawn_as_a_problem
2.17s setup    tests/test_render.py::test_load_is_charged_where_the_assignees_are
2.17s call     tests/test_table.py::test_a_revealed_cell_can_be_put_back
2.17s call     tests/test_editor.py::test_a_preview_that_has_been_overtaken_is_called_off
2.17s setup    tests/test_render.py::test_a_person_is_weighed_in_weeks_and_not_in_things
2.17s setup    tests/test_render.py::test_a_cycle_card_carries_the_meter_the_cycle_page_draws
2.17s call     tests/test_editor.py::test_there_is_no_handle_where_there_is_nothing_to_divide[1400]
2.16s setup    tests/test_render.py::test_pr_references_become_links_that_resolve
2.16s setup    tests/test_render.py::test_a_person_over_their_availability_says_so_in_the_group_row
2.16s setup    tests/test_render.py::test_an_empty_field_is_a_dash_and_not_a_word
2.16s setup    tests/test_render.py::test_a_recorded_cycle_is_its_roster_and_nobody_else
2.16s call     tests/test_editor.py::test_the_split_a_reader_chose_is_there_the_next_time[None-False]
2.16s call     tests/test_editor.py::test_the_box_and_the_column_beside_it_are_one_face
2.16s call     tests/test_editor.py::test_the_join_between_the_panes_moves_for_the_keyboard_too
2.15s call     tests/test_editor.py::test_the_split_a_reader_chose_is_there_the_next_time[1-False]
2.15s call     tests/test_facets.py::test_opening_one_field_closes_the_last
2.14s call     tests/test_seats.py::test_a_reader_holds_no_seat
2.14s call     tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[records]
2.14s call     tests/test_seats.py::test_somebody_elses_keystroke_leaves_the_numbers_counting_the_document_there_is_now
2.14s call     tests/test_editor.py::test_the_split_a_reader_chose_is_there_the_next_time[2.5-True]
2.14s call     tests/test_editor.py::test_the_full_page_surface_is_a_writing_surface_at_a_window_that_is_not_wide[detail]
2.13s call     tests/test_facets.py::test_escape_closes_the_menu_and_hands_the_keyboard_back
2.13s setup    tests/test_render.py::test_the_five_fills_are_separated_by_lightness_and_not_only_by_hue
2.13s call     tests/test_editor.py::test_a_preview_that_fails_says_so_and_never_writes_the_word_undefined
2.13s call     tests/test_editor.py::test_there_is_no_handle_where_there_is_nothing_to_divide[936]
2.13s setup    tests/test_render.py::test_no_page_reaches_the_network
2.13s call     tests/test_table.py::test_the_header_fits_at_the_width_the_fit_may_squeeze_it_to
2.12s call     tests/test_editor.py::test_a_draft_at_load_forces_a_session_and_the_room_refusal_still_fires
2.12s call     tests/test_coedit.py::test_somebody_elses_keystroke_is_reflected_and_never_sent_back
2.11s setup    tests/test_render.py::test_a_people_row_wears_the_chips_the_table_wears
2.11s call     tests/test_editor.py::test_the_status_bar_says_where_the_caret_is_how_long_it_is_and_what_tab_types
2.10s call     tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[graph]
2.10s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_through_the_adapter[\U0001f916 written by an agent\n-\U0001f916 written by somebody\n]
2.09s call     tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[people]
2.09s call     tests/test_facets.py::test_one_value_is_named_and_unticking_it_puts_the_field_back
2.09s call     tests/test_editor.py::test_there_is_no_handle_where_there_is_nothing_to_divide[700]
2.09s call     tests/test_editor.py::test_a_drag_the_browser_takes_away_lets_go_of_the_join
2.09s call     tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[detail]
2.08s call     tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[timeline]
2.08s call     tests/test_editor.py::test_the_editor_switch_says_which_editor_it_is_and_that_it_reloads[?editor=plain-False]
2.08s call     tests/test_table.py::test_a_row_that_names_no_reviewer_shows_the_ones_under_it
2.08s call     tests/test_editor.py::test_there_is_no_handle_where_there_is_nothing_to_divide[934]
2.07s call     tests/test_table.py::test_a_drop_on_a_dead_connection_takes_its_own_sentence_back_down
2.07s call     tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[table]
2.07s call     tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[cycle]
2.06s call     tests/test_render.py::test_the_static_export_carries_the_drawings_and_offers_no_picker
2.05s call     tests/test_render.py::test_a_sentence_about_the_view_never_costs_the_view_a_row[table]
2.04s call     tests/test_editor.py::test_tab_indents_the_lines_the_selection_touches
2.04s call     tests/test_facets.py::test_a_link_opens_with_its_boxes_ticked
2.03s setup    tests/test_render.py::test_edges_turn_at_right_angles_and_are_drawn_beneath_the_boxes
2.03s call     tests/test_coedit.py::test_a_write_that_fails_is_a_refusal_and_not_an_escape
2.03s call     tests/test_coedit.py::test_the_timer_survives_a_failure_the_tuple_does_not_name
2.03s call     tests/test_coedit.py::test_a_refused_room_tries_again_on_the_next_window
2.03s setup    tests/test_render.py::test_filter_state_lives_in_query_parameters
2.02s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_through_the_adapter[\U0001f44d done\n-\U0001f44e done\n]
2.02s setup    tests/test_render.py::test_a_bar_carries_what_it_is_holding
2.02s setup    tests/test_render.py::test_a_bar_that_overruns_its_cycle_is_one_of_the_bars_on_the_corpus
2.01s setup    tests/test_render.py::test_a_remembered_width_of_nothing_is_thrown_away
2.01s call     tests/test_payload.py::test_a_size_somebody_hand_edited_does_not_empty_the_table[-.inf]
2.01s setup    tests/test_render.py::test_the_dash_that_means_no_value_is_readable
2.01s setup    tests/test_render.py::test_the_graph_is_a_compound_dag_coloured_by_status
2.01s setup    tests/test_render.py::test_the_graph_filters_the_plan_the_way_the_table_does
2.00s setup    tests/test_render.py::test_the_motion_floor_is_the_shell_s_and_not_one_page_s
2.00s setup    tests/test_render.py::test_a_ready_pitch_missing_a_no_gos_section_is_told_so_on_its_own_page
2.00s setup    tests/test_render.py::test_the_timeline_lists_beside_the_chart_what_the_chart_draws
2.00s call     tests/test_cascade.py::test_the_nav_marks_where_you_are_even_on_a_link_you_have_already_used
2.00s call     tests/test_table.py::test_a_rendered_file_offers_no_row_to_type_into
2.00s setup    tests/test_render.py::test_the_page_is_allowed_to_talk_to_its_own_server
2.00s call     tests/test_cli.py::test_render_writes_the_three_pages
2.00s setup    tests/test_render.py::test_every_page_carries_a_skip_link_and_a_live_region
2.00s setup    tests/test_render.py::test_no_colour_is_defined_only_in_the_dark_block
2.00s setup    tests/test_render.py::test_the_graph_commits_in_the_same_place_every_other_page_does
2.00s setup    tests/test_render.py::test_the_app_moves_in_two_places
2.00s setup    tests/test_render.py::test_a_dependency_arrow_can_be_seen_on_the_canvas_it_is_drawn_on
2.00s setup    tests/test_render.py::test_a_reader_who_asked_for_less_motion_gets_none_of_the_motion_there_is
2.00s setup    tests/test_render.py::test_a_rendered_file_dresses_its_cells_the_way_the_server_does
2.00s setup    tests/test_render.py::test_the_timeline_filters_with_the_same_bar_the_table_does
2.00s setup    tests/test_render.py::test_every_status_owns_a_mark_that_is_not_a_colour
1.99s setup    tests/test_render.py::test_a_heading_that_repeats_the_nav_is_announced_and_not_drawn
1.99s setup    tests/test_render.py::test_the_graph_says_which_of_the_three_emptinesses_it_is
1.99s setup    tests/test_render.py::test_a_first_heading_that_is_not_the_title_is_left_alone
1.99s setup    tests/test_render.py::test_drawing_a_dependency_does_not_write_one
1.99s setup    tests/test_render.py::test_the_page_draws_both_rules
1.99s setup    tests/test_render.py::test_a_rendered_plan_offers_no_dead_control
1.99s setup    tests/test_render.py::test_a_pitch_draws_its_tasks_as_the_progress_it_has_made
1.99s setup    tests/test_render.py::test_the_people_page_draws_the_control_bar_the_plan_draws
1.99s setup    tests/test_render.py::test_every_page_carries_its_own_icon
1.99s setup    tests/test_render.py::test_the_table_shows_a_persistent_blocker_count
1.99s call     tests/test_status_gate.py::test_a_row_that_has_what_the_status_wants_is_not_asked
1.99s setup    tests/test_render.py::test_the_export_draws_no_sign_in
1.99s setup    tests/test_render.py::test_a_boundary_and_an_absent_value_are_both_visible
1.99s setup    tests/test_render.py::test_a_node_says_its_status_without_using_colour
1.99s setup    tests/test_render.py::test_hiding_a_node_never_leaves_an_edge_pointing_at_nothing
1.99s setup    tests/test_render.py::test_render_static_writes_every_page_and_says_which
1.99s setup    tests/test_render.py::test_a_bar_says_its_status_without_using_colour
1.99s setup    tests/test_render.py::test_the_icon_needs_no_escaping_to_sit_in_an_attribute
1.99s setup    tests/test_render.py::test_the_timeline_hatches_what_it_is_guessing
1.99s setup    tests/test_render.py::test_the_detail_column_is_centred_and_the_facts_sit_beside_the_document
1.99s setup    tests/test_render.py::test_a_pitch_says_what_its_tasks_add_up_to_beside_what_it_was_bet_at
1.99s setup    tests/test_render.py::test_the_libraries_are_inlined_rather_than_linked
1.99s setup    tests/test_render.py::test_the_theme_is_chosen_before_the_first_paint
1.99s setup    tests/test_render.py::test_the_detail_page_names_each_document_it_holds
1.99s setup    tests/test_render.py::test_a_status_shape_is_bounded_against_the_page_it_sits_on
1.99s setup    tests/test_render.py::test_the_graph_repaints_rather_than_reloads_on_a_theme_change
1.99s setup    tests/test_render.py::test_the_three_theme_blocks_agree_about_every_colour
1.99s setup    tests/test_render.py::test_the_font_licence_travels_with_the_font
1.99s setup    tests/test_render.py::test_a_chip_pair_is_readable_in_both_themes
1.99s setup    tests/test_render.py::test_the_table_carries_every_entity_and_its_derived_dates
1.99s setup    tests/test_render.py::test_every_page_can_draw_a_problem_and_a_focus_ring
1.98s setup    tests/test_render.py::test_every_explanation_reaches_the_reader
1.98s setup    tests/test_render.py::test_the_legend_draws_a_cycle_boundary_the_way_the_plot_does
1.98s setup    tests/test_render.py::test_no_page_asks_the_network_for_a_font
1.98s setup    tests/test_render.py::test_a_persons_rows_lead_with_what_they_own
1.98s setup    tests/test_render.py::test_every_person_links_to_the_table_filtered_by_them
1.98s setup    tests/test_render.py::test_every_page_names_itself_and_holds_exactly_one_main
1.98s setup    tests/test_render.py::test_opening_a_node_takes_two_clicks
1.98s setup    tests/test_render.py::test_the_shaping_doc_does_not_repeat_the_heading_it_is_under
1.98s setup    tests/test_render.py::test_the_detail_page_renders_the_shaping_doc_as_markdown
1.98s call     tests/test_table.py::test_the_static_export_offers_no_editing_at_all
1.98s setup    tests/test_render.py::test_no_page_uses_one_id_for_more_than_one_element
1.98s setup    tests/test_render.py::test_the_detail_page_wears_the_same_chips_every_other_view_wears
1.98s setup    tests/test_render.py::test_the_people_page_is_one_table_with_one_header
1.98s setup    tests/test_render.py::test_the_graph_carries_one_hint_and_no_mode_paragraph
1.98s setup    tests/test_render.py::test_every_library_is_inlined_exactly_once_and_no_marker_survives
1.98s setup    tests/test_render.py::test_the_page_names_its_fonts_once
1.98s setup    tests/test_render.py::test_a_span_less_entity_is_listed_but_not_drawn
1.98s setup    tests/test_render.py::test_every_page_carries_the_toggle
1.98s setup    tests/test_render.py::test_the_timeline_draws_cycle_boundaries_and_today
1.98s setup    tests/test_render.py::test_the_graph_names_every_colour_it_draws_with
1.98s setup    tests/test_render.py::test_the_timeline_names_every_colour_it_draws
1.98s setup    tests/test_render.py::test_a_batch_of_edges_is_saved_against_the_commit_before_it
1.98s setup    tests/test_render.py::test_the_typeface_travels_with_the_page
1.98s setup    tests/test_render.py::test_the_ink_on_a_shape_stays_a_per_status_token
1.98s setup    tests/test_render.py::test_every_page_echoes_the_iso_value_of_a_date_box
1.98s setup    tests/test_render.py::test_every_view_links_to_the_detail_page
1.98s setup    tests/test_render.py::test_a_person_row_says_which_hat_they_are_wearing
1.98s setup    tests/test_render.py::test_the_cycle_band_is_one_token_and_it_can_be_seen
1.98s setup    tests/test_render.py::test_one_persons_rows_do_not_run_into_the_next
1.98s setup    tests/test_render.py::test_a_group_name_is_readable_inside_its_own_box
1.98s setup    tests/test_render.py::test_a_hatch_is_drawn_in_the_ink_of_the_bar_it_covers
1.98s setup    tests/test_render.py::test_a_status_carries_a_chip_palette_as_well_as_a_fill
1.98s setup    tests/test_render.py::test_the_detail_page_shows_the_derived_dates_and_the_explanation
1.98s setup    tests/test_render.py::test_a_node_takes_its_ink_from_the_fill_it_sits_on
1.98s setup    tests/test_render.py::test_the_people_page_says_when_its_filters_match_nothing
1.98s setup    tests/test_render.py::test_a_status_colour_is_a_token_and_not_baked_into_a_bar
1.98s setup    tests/test_render.py::test_a_detail_page_exists_for_every_entity
1.98s setup    tests/test_render.py::test_the_detail_page_opens_as_an_index_not_a_wall_of_text
1.98s setup    tests/test_render.py::test_a_cycle_gets_a_band_of_its_own_above_the_months
1.98s setup    tests/test_render.py::test_the_furniture_every_page_shares_is_written_once
1.97s setup    tests/test_render.py::test_every_person_row_links_to_the_entity
1.97s setup    tests/test_render.py::test_a_cycle_with_no_record_is_weeks_bet_against_no_roster
1.97s setup    tests/test_render.py::test_one_quantity_is_called_appetite_wherever_it_is_read
1.97s setup    tests/test_render.py::test_the_people_page_is_alphabetical_and_filterable
1.97s call     tests/test_table.py::test_the_badge_is_never_the_part_of_a_clamped_cell_that_gets_cut
1.97s setup    tests/test_render.py::test_the_people_page_lists_everyone_the_plan_names
1.97s setup    tests/test_render.py::test_every_filter_offers_a_way_back_to_everything
1.97s call     tests/test_editor.py::test_the_split_a_reader_chose_is_there_the_next_time[wide-False]
1.97s setup    tests/test_render.py::test_every_status_fill_carries_ink_that_reads_on_it
1.96s call     tests/test_cascade.py::test_a_link_that_is_a_control_is_drawn_as_one_on_every_page
1.95s call     tests/test_cascade.py::test_every_kind_chip_is_the_same_shape[pitch]
1.95s call     tests/test_cascade.py::test_every_kind_chip_is_the_same_shape[task]
1.94s call     tests/test_cascade.py::test_every_kind_chip_is_the_same_shape[project]
1.94s call     tests/test_render.py::test_render_static_writes_every_page_and_says_which
1.94s call     tests/test_status_gate.py::test_giving_up_on_the_question_changes_nothing
1.93s call     tests/test_cascade.py::test_the_row_a_pages_own_controls_stand_in_is_a_row_on_every_page
1.93s call     tests/test_table.py::test_the_header_and_the_frozen_pair_hold_when_the_rows_are_tall
1.91s call     tests/test_injection.py::test_no_marker_string_reaches_a_static_page_as_anything_but_text
1.89s call     tests/test_payload.py::test_a_size_somebody_hand_edited_does_not_empty_the_table[.nan]
1.89s call     tests/test_facets.py::test_a_facet_reads_as_a_menu_and_not_as_a_box_to_type_in
1.86s call     tests/test_status_gate.py::test_a_status_that_needs_a_date_asks_for_it
1.84s call     tests/test_coedit.py::test_a_real_browser_opens_the_socket_under_this_policy_and_draws_the_room
1.83s call     tests/test_table.py::test_a_dragged_table_still_fits_the_window_it_is_looked_at_in
1.82s call     tests/test_headers.py::test_every_response_says_what_it_may_do[/detail]
1.82s call     tests/test_payload.py::test_a_size_somebody_hand_edited_does_not_empty_the_table[.inf]
1.81s call     tests/test_render.py::test_a_sentence_about_the_view_never_costs_the_view_a_row[timeline]
1.80s call     tests/test_deck.py::test_the_plan_a_slide_falls_back_to_is_cut_to_the_sheet_and_says_so
1.79s call     tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[timeline]
1.78s call     tests/test_facets.py::test_the_people_page_honours_both_values_too
1.75s call     tests/test_cascade.py::test_a_conflict_report_is_a_report_on_the_table_as_well_as_the_detail_page
1.72s setup    tests/test_cascade.py::test_the_handle_between_the_panes_is_a_control_in_one_view_and_nowhere_else
1.71s setup    tests/test_cascade.py::test_the_full_page_class_does_not_beat_the_editing_class
1.70s call     tests/test_records.py::test_the_landing_box_and_the_server_find_the_same_records
1.66s call     tests/test_search.py::test_a_word_only_in_a_shaping_document_is_not_a_match
1.52s call     tests/test_search.py::test_nothing_malformed_is_quietly_accepted
1.51s call     tests/test_search.py::test_both_halves_refuse_the_same_queries_with_the_same_sentence
1.46s setup    tests/test_injection.py::test_no_static_page_lets_a_field_become_markup
1.41s call     tests/test_web.py::test_every_route_says_which_nav_item_it_is
1.37s call     tests/test_gitdoor.py::test_a_file_name_nobody_should_have_used_is_still_only_text
1.37s call     tests/test_gitdoor.py::test_a_plan_everybody_can_read_says_nothing_about_unreadable_files
1.30s call     tests/test_render.py::test_an_empty_timeline_says_which_kind_of_empty_it_is
1.11s call     tests/test_table.py::test_the_create_form_offers_the_three_kinds_and_nothing_else
1.09s call     tests/test_search.py::test_every_searchable_field_is_reachable_from_the_box
1.03s call     tests/test_render.py::test_a_reader_who_may_not_write_is_sent_no_editor_library
0.98s call     tests/test_coedit.py::test_the_served_detail_page_carries_the_room_and_no_other_page_does
0.91s call     tests/test_exclusion.py::test_an_unplanned_record_is_on_its_own_page_and_the_landing_and_nowhere_else
0.89s call     tests/test_notes.py::test_the_promote_control_is_not_offered_where_it_cannot_work
0.86s call     tests/test_editor.py::test_the_body_is_read_through_one_place_and_nothing_else
0.86s call     tests/test_render.py::test_the_index_is_grouped_in_the_order_work_moves
0.84s call     tests/test_coedit.py::test_the_static_export_carries_no_socket
0.82s call     tests/test_table.py::test_a_column_goes_only_when_the_one_before_it_was_not_enough
0.82s call     tests/test_web.py::test_the_parse_cache_survives_readers_arriving_at_once
0.82s setup    tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[timeline]
0.81s setup    tests/test_writes.py::test_a_server_fault_gives_the_cycle_page_back
0.79s call     tests/test_web.py::test_one_save_does_not_stop_the_rest_of_the_process
0.75s setup    tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[graph]
0.75s setup    tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[create]
0.75s setup    tests/test_cascade.py::test_no_stylesheet_has_an_unclosed_comment
0.75s setup    tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[table]
0.74s setup    tests/test_cascade.py::test_every_control_on_every_page_is_drawn_the_same[detail]
0.74s call     tests/test_render.py::test_the_timeline_orders_its_rows_by_containment
0.74s call     tests/test_cascade.py::test_every_commit_bar_sticks_to_the_same_edge_and_one_rule_decides_it
0.73s call     tests/test_web.py::test_a_cycle_record_longer_than_the_calendar_leaves_every_page_readable
0.73s setup    tests/test_injection.py::test_the_fixture_really_is_hostile
0.72s call     tests/test_records.py::test_an_export_of_a_repository_carries_the_times
0.71s call     tests/test_records.py::test_an_export_without_git_omits_the_time_column
0.70s call     tests/test_table.py::test_a_record_created_from_the_merged_page_round_trips[project]
0.68s call     tests/test_web.py::test_the_detail_page_says_which_entity_it_is_looking_at
0.65s call     tests/test_web.py::test_the_content_stays_public_when_nobody_is_signed_in
0.65s call     tests/test_web.py::test_a_served_page_navigates_by_route_and_not_by_filename
0.64s setup    tests/test_render.py::test_the_headings_a_server_draws_are_the_same_two_kinds
0.61s call     tests/test_payload.py::test_every_page_still_serves_when_a_file_carries_such_a_size[-.inf]
0.61s call     tests/test_payload.py::test_every_page_still_serves_when_a_file_carries_such_a_size[.nan]
0.61s call     tests/test_payload.py::test_every_page_still_serves_when_a_file_carries_such_a_size[.inf]
0.57s call     tests/test_editor.py::test_the_kind_is_read_before_the_name_on_every_page_that_has_one
0.57s call     tests/test_editor.py::test_a_restored_draft_is_saved_against_the_commit_it_was_drafted_against
0.55s call     tests/test_render.py::test_a_child_stays_indented_when_its_parent_is_not_drawn
0.55s call     tests/test_web.py::test_both_editors_send_the_title_they_are_previewing
0.55s call     tests/test_render.py::test_the_timeline_hatches_what_it_is_guessing
0.55s call     tests/test_table.py::test_a_record_created_from_the_merged_page_round_trips[pitch]
0.55s setup    tests/test_table.py::test_the_kind_is_a_dropdown_and_switching_keeps_what_was_typed
0.53s call     tests/test_table.py::test_a_record_created_from_the_merged_page_round_trips[task]
0.53s call     tests/test_editor.py::test_an_image_can_be_pasted_or_dropped_into_the_body
0.53s call     tests/test_cli.py::test_the_demo_signs_you_in_as_somebody_the_plan_names
0.52s call     tests/test_table.py::test_the_create_page_is_the_record_page_in_a_mode
0.52s call     tests/test_web.py::test_no_page_declares_one_name_twice[/detail]
0.52s call     tests/test_web.py::test_every_view_is_served_as_a_page[/detail]
0.50s call     tests/test_delete.py::test_only_somebody_the_server_would_take_a_write_from_is_offered_the_button
0.50s call     tests/test_gitdoor.py::test_every_page_the_renderer_can_draw_carries_the_banner
0.49s call     tests/test_product.py::test_a_product_can_be_made_through_the_api
0.49s call     tests/test_table.py::test_a_record_created_from_the_merged_page_round_trips[issue]
0.48s call     tests/test_editor.py::test_every_surface_that_splits_carries_the_same_handle[/new]
0.48s call     tests/test_table.py::test_a_record_created_from_the_merged_page_round_trips[note]
0.47s call     tests/test_cli.py::test_a_plan_that_reaches_the_end_of_the_calendar_still_renders
0.46s call     tests/test_schedule.py::test_property_no_dependent_ever_starts_before_its_blocker_has_finished
0.46s call     tests/test_gitdoor.py::test_render_writes_every_page_and_says_what_it_left_out
0.45s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[owner-value1]
0.45s call     tests/test_table.py::test_a_record_created_from_the_merged_page_round_trips[product]
0.45s call     tests/test_render.py::test_a_same_day_span_is_still_wide_enough_to_hit
0.43s setup    tests/test_table.py::test_the_create_form_has_somewhere_to_put_the_server_refusal
0.42s call     tests/test_editor.py::test_every_answer_a_write_gives_lands_in_a_live_region
0.40s call     tests/test_web.py::test_a_done_date_at_the_end_of_the_calendar_leaves_a_timeline_you_can_open
0.40s call     tests/test_coedit.py::test_a_member_who_is_behind_but_still_reading_is_not_given_up_on
0.40s call     tests/test_cli.py::test_demo_builds_a_repository_the_server_can_actually_serve
0.39s setup    tests/test_table.py::test_the_create_checks_the_status_gate_before_it_posts
0.39s setup    tests/test_table.py::test_a_dropdown_on_either_form_offers_words_and_stores_identifiers
0.39s setup    tests/test_table.py::test_the_status_control_offers_every_status_and_not_only_the_ones_in_use
0.39s setup    tests/test_table.py::test_the_status_gate_is_written_on_the_controls_themselves
0.39s setup    tests/test_table.py::test_a_new_pitch_starts_from_the_teams_own_shaping_template
0.39s setup    tests/test_table.py::test_the_form_says_which_fields_the_chosen_status_demands
0.39s setup    tests/test_table.py::test_the_gates_are_the_validator_s_own_and_not_a_second_copy
0.39s setup    tests/test_table.py::test_every_reference_on_the_create_form_is_offered_and_not_remembered
0.39s setup    tests/test_table.py::test_the_kind_picker_offers_every_rung_and_only_rungs
0.39s call     tests/test_web.py::test_no_page_declares_one_name_twice[/new?kind=task]
0.39s setup    tests/test_table.py::test_a_template_never_overwrites_something_somebody_typed
0.39s setup    tests/test_table.py::test_every_control_on_the_create_form_has_a_name
0.39s setup    tests/test_table.py::test_the_create_form_writes_only_fields_a_person_owns
0.38s setup    tests/test_table.py::test_the_create_button_is_reachable_from_anywhere_in_the_form
0.38s setup    tests/test_table.py::test_creating_is_the_detail_page_with_nothing_in_it
0.38s setup    tests/test_table.py::test_the_create_form_names_neither_the_id_nor_the_path
0.38s call     tests/test_web.py::test_every_write_a_page_makes_is_announced_before_and_after_it[/new?kind=task]
0.38s call     tests/test_schedule.py::test_property_adding_an_item_that_shares_no_worker_and_no_ancestor_never_moves_that_items_span
0.37s call     tests/test_table.py::test_a_field_only_one_kind_has_is_absent_from_the_others
0.37s call     tests/test_table.py::test_no_template_comment_reaches_the_page[/new]
0.37s call     tests/test_issues.py::test_the_create_form_offers_an_issue_no_plan_status
0.37s call     tests/test_editor.py::test_every_surface_that_splits_carries_the_same_handle[/new?kind=issue]
0.37s call     tests/test_editor.py::test_every_surface_that_splits_carries_the_same_handle[/new?kind=note]
0.37s call     tests/test_editor.py::test_a_refusal_names_the_field_the_way_the_form_labels_it
0.36s call     tests/test_table.py::test_the_table_offers_a_way_to_create_an_entity
0.35s call     tests/test_render.py::test_an_editable_page_reaches_the_network_no_more_than_a_read_only_one
0.35s call     tests/test_web.py::test_a_committed_parent_that_names_nothing_leaves_every_page_readable
0.35s call     tests/test_web.py::test_a_committed_size_larger_than_the_calendar_leaves_every_page_readable
0.34s call     tests/test_table.py::test_a_clamped_cell_says_what_it_is_hiding_before_it_says_how_to_edit_it
0.34s call     tests/test_schedule.py::test_property_a_worker_never_holds_two_overlapping_spans
0.33s call     tests/test_card.py::test_a_refused_document_costs_the_document_and_nothing_else
0.33s call     tests/test_editor.py::test_the_plain_box_carries_no_editor_library_at_all
0.31s call     tests/test_table.py::test_the_default_fit_never_needs_a_horizontal_scrollbar
0.30s call     tests/test_table.py::test_a_blocker_that_is_done_is_not_a_blocker
0.30s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[title-5]
0.30s call     tests/test_coedit.py::test_a_member_who_never_reads_is_given_up_on
0.30s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[assigned_on-7]
0.30s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[owner-value0]
0.30s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[parent-3]
0.30s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[assigned_on-]
0.30s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[assigned_on-six]
0.30s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[title-value2]
0.29s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[tags-value7]
0.29s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[tags-value8]
0.29s setup    tests/test_editor.py::test_the_detail_page_announces_a_save_it_only_used_to_draw
0.29s call     tests/test_web.py::test_an_entity_the_server_could_not_read_back_is_never_committed[created_schema_version-x]
0.29s call     tests/test_coedit.py::test_the_page_stops_saving_when_the_room_says_there_was_nothing_to_save
0.29s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_as_the_character_it_was[\U0001f916 written by an agent\n-\U0001f916 written by somebody\n]
0.29s setup    tests/test_editor.py::test_cancel_puts_the_fields_back
0.29s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_as_the_character_it_was[a fine result\n-a fine \U0001f389 result\n]
0.28s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_as_the_character_it_was[\U0001f44d done\n-\U0001f44e done\n]
0.28s call     tests/test_editor.py::test_cancelling_a_restored_draft_keeps_the_commit_it_was_written_against
0.28s call     tests/test_records.py::test_a_search_that_matches_nothing_says_so_in_the_views_own_words
0.28s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_as_the_character_it_was[\U0001f600\U0001f601 ok\n-\U0001f601 ok\n]
0.28s call     tests/test_coedit.py::test_an_edit_across_an_emoji_reaches_the_room_as_the_character_it_was[\U0001f1e9\U0001f1ea\n-\U0001f1e9\U0001f1eb\n]
0.27s call     tests/test_coedit.py::test_saving_in_a_room_leaves_the_read_view_showing_what_was_saved
0.27s call     tests/test_coedit.py::test_what_the_room_said_about_a_save_survives_the_reload
0.27s call     tests/test_coedit.py::test_a_draft_in_the_box_is_offered_to_a_room_that_has_not_moved
0.27s call     tests/test_coedit.py::test_the_parsed_editing_surface_answers_the_body_the_server_rendered
0.26s setup    tests/test_cascade.py::test_a_hidden_control_stays_hidden_on_the_one_stylesheet
0.26s setup    tests/test_cascade.py::test_the_box_on_a_record_page_is_monospace_and_fits_its_pane
0.26s setup    tests/test_cascade.py::test_the_handle_between_the_panes_is_one_control_on_the_one_stylesheet
0.26s setup    tests/test_cascade.py::test_the_record_pages_bar_still_beats_the_field_rule_it_once_lost_to
0.26s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[900]
0.26s call     tests/test_coedit.py::test_the_page_degrades_to_todays_editor_when_the_socket_never_opens
0.26s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1366]
0.26s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1100]
0.26s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1354]
0.26s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1600]
0.26s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1920]
0.26s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1440]
0.25s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[2560]
0.25s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1393]
0.25s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1500]
0.25s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1091]
0.25s call     tests/test_web.py::test_a_nonsense_window_falls_back_instead_of_failing
0.25s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1280]
0.25s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1050]
0.25s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1353]
0.25s call     tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1101]
0.25s call     tests/test_hill.py::test_the_hill_can_say_the_word_without_printing_it
0.24s call     tests/test_web.py::test_nothing_edits_a_record_after_it_has_been_parsed
0.24s call     tests/test_render.py::test_a_rendered_block_carries_the_source_line_it_came_from
0.24s setup    tests/test_table.py::test_the_popup_a_cell_opens_hangs_off_the_body_and_not_off_the_cell
0.23s call     tests/test_notes.py::test_the_note_stays_and_points_at_what_it_became
0.23s call     tests/test_issues.py::test_a_hand_written_edge_to_an_issue_does_not_500_the_table
0.22s call     tests/test_writes.py::test_every_page_that_writes_reads_a_conflict_the_same_way[graph]
0.22s call     tests/test_deck.py::test_an_uploaded_screenshot_is_served_into_the_deck_as_bytes
0.22s call     tests/test_web.py::test_every_control_on_the_cycle_page_has_a_name
0.21s call     tests/test_card.py::test_the_card_says_the_things_a_row_does_not
0.21s call     tests/test_render.py::test_a_struck_out_line_and_a_task_list_render_as_what_they_are
0.20s call     tests/test_table.py::test_a_problem_still_comes_first_and_a_long_list_is_capped
0.20s setup    tests/test_render.py::test_the_heading_costs_the_view_no_row[table]
0.20s call     tests/test_card.py::test_the_document_is_fetched_on_hover_and_not_shipped_with_the_rows
0.20s call     tests/test_notes.py::test_a_promoted_record_says_where_it_came_from_in_its_own_document
0.20s setup    tests/test_render.py::test_a_window_that_changes_under_an_open_page_is_measured_again
0.20s setup    tests/test_render.py::test_a_sentence_about_the_view_never_costs_the_view_a_row[table]
0.20s call     tests/test_render.py::test_a_window_typed_into_the_url_cannot_run_off_the_calendar
0.20s call     tests/test_card.py::test_a_document_that_arrives_late_is_not_drawn_on_the_wrong_card
0.20s setup    tests/test_render.py::test_a_sentence_about_the_view_never_costs_the_view_a_row[timeline]
0.20s setup    tests/test_render.py::test_the_heading_costs_the_view_no_row[timeline]
0.19s setup    tests/test_render.py::test_a_sentence_about_the_view_never_costs_the_view_a_row[graph]
0.19s setup    tests/test_cascade.py::test_the_suggestion_popup_hangs_off_the_body_where_nothing_clips_it
0.19s setup    tests/test_render.py::test_the_box_each_view_fills_stops_where_the_window_does[timeline]
0.19s setup    tests/test_render.py::test_the_heading_costs_the_view_no_row[graph]
0.19s setup    tests/test_render.py::test_the_current_nav_item_is_drawn_and_not_merely_resolved
0.19s setup    tests/test_render.py::test_the_box_each_view_fills_stops_where_the_window_does[graph]
0.19s setup    tests/test_render.py::test_the_box_each_view_fills_stops_where_the_window_does[table]
0.19s setup    tests/test_editor.py::test_the_detail_page_can_be_edited_in_place
0.19s setup    tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[detail]
0.19s call     tests/test_web.py::test_the_preview_shows_what_the_page_will_show
0.19s call     tests/test_delete.py::test_the_panel_says_what_the_delete_will_take_with_it
0.19s call     tests/test_web.py::test_a_pr_reference_is_linked_in_prose_and_left_alone_everywhere_else
0.19s setup    tests/test_editor.py::test_no_derived_value_has_an_input_at_all
0.18s call     tests/test_web.py::test_a_stored_image_is_drawn_and_a_remote_one_is_not
0.18s call     tests/test_socket_offer.py::test_a_reader_is_not_offered_a_socket
0.18s setup    tests/test_editor.py::test_the_body_textarea_holds_what_is_stored
0.18s call     tests/test_web.py::test_no_page_declares_one_name_twice[/detail/task-c00001]
0.18s setup    tests/test_editor.py::test_the_page_carries_the_commit_it_was_rendered_at
0.18s setup    tests/test_editor.py::test_the_save_script_sends_only_what_changed
0.18s call     tests/test_render.py::test_every_library_is_inlined_exactly_once_and_no_marker_survives
0.18s setup    tests/test_editor.py::test_cancelling_an_edit_nobody_made_says_nothing
0.18s setup    tests/test_editor.py::test_the_bar_says_how_much_is_unsaved
0.18s setup    tests/test_editor.py::test_a_conflict_reaches_the_page_as_a_report_and_never_as_markers
0.18s setup    tests/test_editor.py::test_every_answer_a_write_gives_lands_in_a_live_region
0.18s call     tests/test_delete.py::test_delete_stands_beside_edit_and_wears_what_edit_wears
0.18s setup    tests/test_editor.py::test_the_editable_fields_are_the_ones_a_person_owns
0.18s setup    tests/test_editor.py::test_a_date_box_says_what_it_will_store
0.18s setup    tests/test_editor.py::test_a_served_page_listens_for_somebody_elses_commit
0.18s call     tests/test_socket_offer.py::test_a_member_is
0.18s setup    tests/test_editor.py::test_the_status_a_row_is_set_to_says_what_it_will_be_refused_without
0.18s setup    tests/test_editor.py::test_a_save_changes_one_line_and_leaves_the_file_alone
0.18s call     tests/test_card.py::test_a_rendered_file_draws_a_card_with_no_server_to_ask
0.18s setup    tests/test_editor.py::test_a_number_typed_as_a_word_is_refused_rather_than_committed
0.18s setup    tests/test_editor.py::test_the_id_is_shown_and_cannot_be_edited
0.18s setup    tests/test_editor.py::test_the_facts_read_as_a_column_beside_the_document
0.18s setup    tests/test_editor.py::test_the_create_form_does_not_echo_the_dates_it_is_asking_for
0.18s call     tests/test_web.py::test_every_write_a_page_makes_is_announced_before_and_after_it[/detail/task-c00001]
0.18s call     tests/test_table.py::test_the_page_never_reports_its_own_write_to_itself
0.18s setup    tests/test_editor.py::test_the_way_in_is_at_the_top_and_the_two_ways_out_are_together
0.18s call     tests/test_delete.py::test_a_leaf_record_asks_a_plain_question
0.18s call     tests/test_web.py::test_two_reads_of_one_commit_build_the_index_once
0.18s setup    tests/test_web.py::test_a_create_the_server_could_not_read_back_says_which_field[fields0-title]
0.17s setup    tests/test_editor.py::test_every_control_on_the_form_has_a_name
0.17s setup    tests/test_editor.py::test_a_derived_row_carries_no_label_because_it_carries_no_control
0.17s setup    tests/test_web.py::test_a_delete_over_somebody_elses_edit_is_refused_rather_than_merged
0.17s call     tests/test_injection.py::test_no_served_page_lets_a_field_become_markup
0.17s call     tests/test_hill.py::test_the_status_row_is_a_hill_and_the_dropdown_is_gone
0.17s call     tests/test_render.py::test_the_editor_licence_travels_with_the_editor
0.17s call     tests/test_socket_offer.py::test_a_dev_run_offers_the_socket_it_would_accept
0.17s setup    tests/test_web.py::test_a_create_mints_the_id_and_files_it_by_kind
0.17s call     tests/test_hill.py::test_the_read_only_hill_has_no_stops_on_it
0.17s call     tests/test_socket_offer.py::test_a_reader_can_still_read_the_whole_record
0.17s call     tests/test_delete.py::test_the_question_names_the_record_it_is_about
0.17s setup    tests/test_notes.py::test_an_issue_promoted_into_a_task_lands_as_a_task_this_plan_can_read_back
0.17s setup    tests/test_web.py::test_a_served_page_navigates_by_route_and_not_by_filename
0.17s call     tests/test_gitdoor.py::test_the_banner_does_not_change_the_shape_of_a_page_it_names
0.17s call     tests/test_editor.py::test_every_surface_that_splits_carries_the_same_handle[/detail/{task}]
0.16s call     tests/test_editor.py::test_the_parent_control_still_holds_the_id
0.16s call     tests/test_editor.py::test_the_second_editor_is_inlined_checksummed_and_named
0.16s call     tests/test_coedit.py::test_a_commit_the_room_made_is_not_somebody_else_changing_it
0.16s call     tests/test_web.py::test_a_detail_route_serves_one_entity_and_not_the_whole_corpus
0.16s call     tests/test_editor.py::test_a_toolbar_button_keeps_the_selection_it_acts_on
0.16s call     tests/test_editor.py::test_the_toolbar_is_the_one_in_the_screenshot_and_that_overrules_a_count
0.16s call     tests/test_editor.py::test_a_fence_takes_whole_lines_of_its_own
0.16s call     tests/test_editor.py::test_a_list_continues_and_an_empty_item_ends_it
0.16s call     tests/test_editor.py::test_a_view_change_tells_the_seat_layer_the_box_moved
0.16s call     tests/test_table.py::test_a_dropdown_on_either_form_offers_words_and_stores_identifiers
0.16s call     tests/test_editor.py::test_the_second_surface_never_sets_or_replaces_the_whole_document
0.16s call     tests/test_editor.py::test_no_script_ever_assigns_a_textarea_its_value
0.16s call     tests/test_web.py::test_every_view_is_served_as_a_page[/detail/task-c00001]
0.16s call     tests/test_table.py::test_creating_is_the_detail_page_with_nothing_in_it
0.16s call     tests/test_editor.py::test_a_slow_upload_holds_its_place_in_the_text
0.16s call     tests/test_web.py::test_an_edited_record_is_read_again_rather_than_remembered
0.16s call     tests/test_search.py::test_a_half_typed_query_says_what_is_wrong_with_it
0.16s setup    tests/test_headers.py::test_the_page_carries_the_policy_the_server_sends
0.16s call     tests/test_exclusion.py::test_a_row_filed_under_an_unplanned_record_refuses_the_move_and_says_where
0.16s call     tests/test_web.py::test_a_write_is_seen_by_the_very_next_read
0.16s call     tests/test_search.py::test_a_query_that_reads_leaves_nothing_said
0.15s call     tests/test_hill.py::test_the_locked_control_carries_its_explanation_for_a_screen_reader
0.15s teardown tests/test_coedit.py::test_a_draft_against_a_room_that_has_moved_is_reported_and_not_thrown_away
0.15s setup    tests/test_deck.py::test_every_deck_this_suite_can_reach_prints_one_slide_to_a_page
0.15s call     tests/test_render.py::test_every_icon_is_a_row_in_the_picker_with_its_name_beside_it
0.15s setup    tests/test_cascade.py::test_a_problem_on_a_frozen_column_still_gets_its_ground[blocker-title]
0.15s call     tests/test_gitdoor.py::test_the_json_route_says_which_file_and_why[a cycle record whose YAML never closes]
0.14s call     tests/test_table.py::test_a_reparent_leaves_no_derived_column_stale
0.14s call     tests/test_render.py::test_an_icon_nothing_draws_costs_the_drawing_and_nothing_else
0.14s call     tests/test_render.py::test_a_persons_icon_is_drawn_in_the_page_and_not_fetched
0.14s call     tests/test_web.py::test_a_deleted_record_is_gone_from_every_page_that_drew_it
0.14s call     tests/test_coedit.py::test_a_restart_loses_nothing_that_was_committed
0.13s call     tests/test_table.py::test_the_kind_is_chosen_first_and_the_row_follows_from_it
0.13s call     tests/test_table.py::test_the_table_draws_its_rows_in_a_browser_that_refuses_storage
0.13s call     tests/test_table.py::test_what_the_server_refuses_a_row_with_is_shown_beside_it
0.13s call     tests/test_web.py::test_the_index_is_redrawn_when_the_day_moves
0.13s setup    tests/test_facets.py::test_escape_closes_the_menu_and_hands_the_keyboard_back
0.13s call     tests/test_deck.py::test_every_slide_of_the_frozen_corpus_is_worth_the_sheet_it_prints_on
0.13s setup    tests/test_cascade.py::test_a_refused_cell_says_so_on_a_frozen_column_too[owner]
0.13s call     tests/test_hill.py::test_the_card_draws_the_hill_and_keeps_the_word
0.13s setup    tests/test_cascade.py::test_the_frozen_columns_keep_the_position_their_left_offset_is_meant_for
0.13s setup    tests/test_cascade.py::test_a_problem_on_a_frozen_column_still_gets_its_ground[blocker-id]
0.13s setup    tests/test_cascade.py::test_every_rule_that_corrects_a_frozen_column_outweighs_it
0.13s call     tests/test_hill.py::test_a_word_the_card_does_not_know_gets_no_ball_either
0.13s setup    tests/test_cascade.py::test_the_table_body_scrolls_in_a_box_that_clips_what_is_inside_it
0.13s setup    tests/test_cascade.py::test_a_problem_on_a_frozen_column_still_gets_its_ground[warn-owner]
0.13s setup    tests/test_cascade.py::test_a_frozen_cell_never_asks_for_an_outset_shadow
0.13s setup    tests/test_search.py::test_the_language_is_evaluated_the_same_in_the_browser
0.13s setup    tests/test_cascade.py::test_a_refused_cell_says_so_on_a_frozen_column_too[title]
0.13s setup    tests/test_cascade.py::test_the_title_header_keeps_the_rule_along_its_bottom_edge
0.13s setup    tests/test_cascade.py::test_a_refused_cell_says_so_on_a_frozen_column_too[id]
0.13s setup    tests/test_cascade.py::test_the_column_control_is_drawn_as_a_control_and_the_label_is_not
0.13s setup    tests/test_cascade.py::test_a_problem_on_a_frozen_column_still_gets_its_ground[warn-id]
0.13s setup    tests/test_facets.py::test_clearing_puts_every_field_back
0.13s teardown tests/test_web.py::test_a_delete_tells_the_open_pages_which_record_went
0.13s setup    tests/test_cascade.py::test_the_frozen_edge_is_drawn_only_while_the_table_is_scrolled
0.13s setup    tests/test_facets.py::test_one_value_is_named_and_unticking_it_puts_the_field_back
0.13s setup    tests/test_table.py::test_the_column_control_opens_the_column_and_closes_it
0.13s setup    tests/test_cascade.py::test_a_problem_on_a_frozen_column_still_gets_its_ground[blocker-owner]
0.13s setup    tests/test_cascade.py::test_a_problem_on_a_frozen_column_still_gets_its_ground[warn-title]
0.13s setup    tests/test_cascade.py::test_the_frozen_headers_are_drawn_over_the_rows_that_pass_under_them
0.13s setup    tests/test_facets.py::test_the_way_out_appears_only_when_there_is_one
0.13s setup    tests/test_facets.py::test_the_closed_control_says_what_is_set
0.13s setup    tests/test_table.py::test_an_expanded_column_is_a_way_of_reading_and_not_a_setting
0.13s call     tests/test_web.py::test_all_five_kinds_are_read_through_the_one_cache
0.13s setup    tests/test_facets.py::test_two_values_of_one_field_mean_either
0.13s setup    tests/test_table.py::test_the_header_and_the_frozen_pair_hold_when_the_rows_are_tall
0.13s setup    tests/test_facets.py::test_a_facet_reads_as_a_menu_and_not_as_a_box_to_type_in
0.13s call     tests/test_table.py::test_an_empty_plan_still_offers_the_row_that_would_end_it
0.13s call     tests/test_web.py::test_an_icon_is_one_of_the_ones_the_picker_offers
0.13s setup    tests/test_facets.py::test_the_server_answers_the_same_two_values
0.13s setup    tests/test_search.py::test_a_word_only_in_a_shaping_document_is_not_a_match
0.13s setup    tests/test_table.py::test_a_revealed_cell_can_be_put_back
0.13s call     tests/test_themes.py::test_the_stylesheet_answers_all_three_states_of_the_switch
0.13s setup    tests/test_table.py::test_the_header_fits_at_the_width_the_fit_may_squeeze_it_to
0.13s setup    tests/test_facets.py::test_opening_one_field_closes_the_last
0.13s call     tests/test_issues.py::test_a_derived_state_reads_on_the_page_and_locks_the_control
0.13s setup    tests/test_search.py::test_both_halves_refuse_the_same_queries_with_the_same_sentence
0.13s call     tests/test_table.py::test_a_row_with_no_title_is_never_sent
0.12s setup    tests/test_search.py::test_a_half_typed_query_says_what_is_wrong_with_it
0.12s setup    tests/test_search.py::test_a_query_that_reads_leaves_nothing_said
0.12s setup    tests/test_search.py::test_nothing_malformed_is_quietly_accepted
0.12s setup    tests/test_search.py::test_the_box_and_the_server_find_the_same_records
0.12s setup    tests/test_search.py::test_every_searchable_field_is_reachable_from_the_box
0.12s teardown tests/test_web.py::test_a_write_is_broadcast_to_everybody_watching
0.12s call     tests/test_records.py::test_the_nav_says_records_at_the_root_and_table_at_table
0.12s call     tests/test_table.py::test_a_half_filled_row_is_not_remembered_anywhere
0.12s call     tests/test_records.py::test_each_view_offers_its_own_create_button
0.12s call     tests/test_table.py::test_the_count_says_how_many_rows_there_are_to_be_shown_of
0.12s setup    tests/test_coedit.py::test_one_member_who_stops_reading_freezes_nobody
0.12s call     tests/test_records.py::test_an_empty_view_and_an_empty_plan_are_different_sentences
0.12s call     tests/test_records.py::test_a_predicate_in_the_url_filters_rows_and_an_unmatched_one_is_a_sentence
0.12s teardown tests/test_coedit.py::test_a_restored_draft_survives_the_welcome_and_is_offered_to_the_room
0.12s call     tests/test_issues.py::test_an_issue_renders_on_the_shared_record_page
0.12s call     tests/test_table.py::test_a_row_created_inline_goes_through_the_one_create_route
0.12s call     tests/test_web.py::test_the_bet_table_wears_no_class_the_page_cannot_draw
0.12s call     tests/test_table.py::test_the_created_row_is_re_read_rather_than_invented
0.12s call     tests/test_exclusion.py::test_an_inbox_tag_is_offered_where_tags_are_edited_and_its_id_is_not
0.11s call     tests/test_records.py::test_a_state_only_the_script_reaches_is_announced_and_only_once
0.11s call     tests/test_table.py::test_a_redraw_in_the_middle_of_a_move_leaves_the_last_row_saying_what_it_says
0.11s setup    tests/test_edges.py::test_an_edge_drawn_by_mistake_is_simply_undrawn
0.11s setup    tests/test_edges.py::test_reset_and_leaving_the_mode_both_put_a_marked_edge_back
0.11s call     tests/test_records.py::test_an_unreadable_query_goes_to_the_error_region_not_to_a_row
0.11s call     tests/test_web.py::test_a_file_that_will_not_parse_is_not_remembered_as_an_answer
0.11s setup    tests/test_edges.py::test_an_existing_dependency_can_be_taken_off_the_diagram
0.11s call     tests/test_notes.py::test_a_note_promotes_into_a_record_that_validates
0.11s call     tests/test_writes.py::test_every_page_that_writes_reads_a_conflict_the_same_way[detail]
0.11s teardown tests/test_coedit.py::test_a_real_browser_opens_the_socket_under_this_policy_and_draws_the_room
0.11s setup    tests/test_cascade.py::test_the_open_picker_is_painted_over_the_sticky_header_and_not_under_it
0.11s setup    tests/test_cascade.py::test_the_picker_scrolls_inside_itself_rather_than_off_the_page
0.11s call     tests/test_records.py::test_a_lost_payload_degrades_to_an_unfiltered_list_and_says_so
0.11s setup    tests/test_cascade.py::test_a_refusal_lands_somewhere_a_sighted_reader_can_read_it
0.11s call     tests/test_table.py::test_a_row_can_be_moved_without_a_mouse
0.11s setup    tests/test_cascade.py::test_a_refusal_is_coloured_as_one_and_a_receipt_is_not
0.11s setup    tests/test_cascade.py::test_the_picker_is_hidden_by_the_attribute_and_not_by_source_order
0.11s call     tests/test_writes.py::test_the_tables_conflict_banner_goes_when_the_next_save_lands
0.11s setup    tests/test_cascade.py::test_a_mark_does_not_shrink_out_of_the_line_it_sits_in
0.11s call     tests/test_table.py::test_the_connector_that_ends_a_branch_is_the_last_row_drawn
0.11s call     tests/test_writes.py::test_every_page_that_writes_reads_a_conflict_the_same_way[new]
0.11s call     tests/test_table.py::test_a_row_can_be_taken_out_of_what_holds_it
0.11s call     tests/test_table.py::test_the_row_says_which_columns_it_cannot_be_typed_into_and_why
0.11s call     tests/test_records.py::test_the_issues_view_box_searches_issues_and_nothing_else
0.11s call     tests/test_render.py::test_the_timeline_survives_a_date_at_the_end_of_the_calendar
0.11s call     tests/test_table.py::test_every_other_column_sorts_flat
0.11s call     tests/test_cli.py::test_the_demo_leaves_the_corpus_it_was_built_from_exactly_as_it_found_it
0.11s call     tests/test_writes.py::test_a_conflict_creating_an_entity_is_not_printed_as_refused
0.10s call     tests/test_table.py::test_a_drop_is_one_patch_of_one_field_through_the_save_path
0.10s call     tests/test_table.py::test_a_row_kept_for_context_is_still_a_record
0.10s call     tests/test_delete.py::test_the_control_is_only_on_the_record_page
0.10s call     tests/test_table.py::test_a_filtered_table_keeps_the_tree_and_counts_only_the_answers
0.10s call     tests/test_render.py::test_a_bar_at_the_end_of_time_does_not_make_a_page_nobody_can_open
0.10s call     tests/test_render.py::test_the_date_boxes_hold_the_window_on_screen
0.10s call     tests/test_deck.py::test_a_deck_is_bounded_to_the_cycles_that_can_exist
0.10s call     tests/test_table.py::test_the_indent_never_takes_the_drop_target_with_it
0.10s call     tests/test_deck.py::test_the_cycle_page_offers_the_deck_only_where_there_is_one
0.10s call     tests/test_headers.py::test_every_response_says_what_it_may_do[/]
0.10s call     tests/test_injection.py::test_the_combobox_popup_does_not_let_a_suggestion_become_markup[one entity 0]
0.10s call     tests/test_render.py::test_a_pitch_with_no_appetite_yet_is_not_accused_of_exceeding_it
0.10s setup    tests/test_coedit.py::test_a_save_carries_the_fields_from_the_form_and_the_body_from_the_room
0.10s call     tests/test_web.py::test_only_the_named_are_in_a_cycle
0.10s call     tests/test_validate.py::test_check_over_the_seed_corpus_prints_exactly_the_validated_problems
0.10s call     tests/test_web.py::test_a_carried_item_cannot_be_re_stamped_from_the_cycle_page
0.10s call     tests/test_table.py::test_the_row_a_drop_would_land_in_is_named_beside_the_cursor
0.10s call     tests/test_table.py::test_the_id_sort_draws_the_plan_depth_first
0.10s call     tests/test_table.py::test_a_drop_that_breaks_containment_is_refused_before_it_is_sent
0.10s call     tests/test_render.py::test_zoom_is_drawn_rather_than_stretched
0.09s call     tests/test_table.py::test_escape_leaves_the_row_where_it_was
0.09s call     tests/test_table.py::test_the_table_ends_in_a_row_that_makes_one
0.09s call     tests/test_cli.py::test_the_demo_repository_goes_when_the_server_does
0.09s call     tests/test_table.py::test_a_row_that_may_hold_it_says_so_before_the_mouse_arrives
0.09s call     tests/test_coedit.py::test_the_two_implementations_agree_about_a_body_that_is_not_ascii
0.09s call     tests/test_render.py::test_a_narrowed_window_clips_bars_rather_than_dropping_them
0.09s call     tests/test_hill.py::test_a_derived_state_locks_the_control_in_the_dom_not_in_paint
0.09s call     tests/test_table.py::test_a_row_that_belongs_to_nothing_is_never_offered_a_move
0.09s call     tests/test_render.py::test_a_window_that_excludes_today_draws_no_today_line
0.09s call     tests/test_writes.py::test_every_page_that_writes_reads_a_conflict_the_same_way[table]
0.09s call     tests/test_render.py::test_a_plan_where_nobody_has_picked_one_draws_the_page_as_it_was
0.09s call     tests/test_injection.py::test_the_combobox_popup_does_not_let_a_suggestion_become_markup[new task]
0.09s call     tests/test_records.py::test_the_inbox_routes_render_the_landing_held_to_one_kind
0.09s call     tests/test_web.py::test_a_record_is_parsed_once_however_many_commits_leave_it_alone
0.08s setup    tests/test_table.py::test_a_window_wider_than_the_plan_gives_the_slack_to_tags
0.08s call     tests/test_gitdoor.py::test_a_reason_quoting_the_file_is_still_only_text
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1920]
0.08s setup    tests/test_table.py::test_what_the_server_refuses_a_row_with_is_shown_beside_it
0.08s setup    tests/test_table.py::test_a_problem_marks_the_row_and_the_cell_that_caused_it
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1101]
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1440]
0.08s setup    tests/test_table.py::test_escape_leaves_the_row_where_it_was
0.08s setup    tests/test_table.py::test_a_conflict_is_never_written_into_an_editable_cell
0.08s setup    tests/test_table.py::test_a_status_column_sorts_the_way_work_moves
0.08s setup    tests/test_table.py::test_the_tags_cell_is_one_line_with_the_rest_behind_a_count
0.08s setup    tests/test_table.py::test_the_frozen_edge_is_a_pixel_a_browser_draws
0.08s setup    tests/test_table.py::test_the_table_declares_which_columns_a_person_owns
0.08s setup    tests/test_table.py::test_an_empty_table_says_which_of_the_three_empties_it_is
0.08s setup    tests/test_writes.py::test_a_save_addresses_the_row_it_was_pressed_on
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1050]
0.08s setup    tests/test_delete.py::test_the_control_is_only_on_the_record_page
0.08s call     tests/test_credential.py::test_the_assertion_is_actually_signed
0.08s setup    tests/test_table.py::test_the_editor_discards_on_escape_and_commits_on_tab
0.08s setup    tests/test_table.py::test_a_column_is_dragged_in_the_header_and_a_row_in_the_body
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1354]
0.08s setup    tests/test_table.py::test_the_frozen_edge_is_painted_from_the_scroll_position
0.08s setup    tests/test_table.py::test_a_reparent_leaves_no_derived_column_stale
0.08s setup    tests/test_table.py::test_the_search_box_is_not_the_tenth_filter
0.08s setup    tests/test_table.py::test_the_fit_is_measured_again_once_the_real_typeface_has_landed
0.08s setup    tests/test_table.py::test_a_redraw_in_the_middle_of_a_move_leaves_the_last_row_saying_what_it_says
0.08s setup    tests/test_table.py::test_a_row_created_inline_goes_through_the_one_create_route
0.08s setup    tests/test_table.py::test_the_row_a_drop_would_land_in_is_named_beside_the_cursor
0.08s setup    tests/test_table.py::test_a_drop_that_breaks_containment_is_refused_before_it_is_sent
0.08s setup    tests/test_table.py::test_an_inline_edit_can_never_erase_a_shaping_document
0.08s call     tests/test_web.py::test_the_cycle_page_shows_load_against_capacity
0.08s setup    tests/test_table.py::test_the_rule_the_page_refuses_with_is_the_model_s
0.08s setup    tests/test_table.py::test_no_derived_column_can_be_edited_at_all
0.08s call     tests/test_render.py::test_one_persons_rows_do_not_run_into_the_next
0.08s setup    tests/test_table.py::test_a_row_that_belongs_to_nothing_is_never_offered_a_move
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a project file that is empty]
0.08s setup    tests/test_table.py::test_the_page_carries_the_commit_it_was_rendered_at
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[an assigned_on that is a phrase]
0.08s setup    tests/test_table.py::test_a_row_can_be_taken_out_of_what_holds_it
0.08s setup    tests/test_table.py::test_every_identifier_a_filter_offers_is_shown_as_a_word
0.08s setup    tests/test_table.py::test_a_column_too_narrow_for_its_word_keeps_its_mark
0.08s setup    tests/test_table.py::test_a_drop_on_a_dead_connection_takes_its_own_sentence_back_down
0.08s setup    tests/test_table.py::test_a_write_refreshes_the_count_and_the_markers_in_place
0.08s setup    tests/test_table.py::test_the_reveal_line_cannot_smuggle_markup_into_the_cell
0.08s setup    tests/test_table.py::test_the_columns_and_the_cells_agree_on_their_order
0.08s setup    tests/test_table.py::test_the_badge_is_never_the_part_of_a_clamped_cell_that_gets_cut
0.08s setup    tests/test_table.py::test_editing_the_table_pulled_in_no_library
0.08s call     tests/test_cascade.py::test_the_draft_rows_controls_stand_on_one_line
0.08s setup    tests/test_table.py::test_the_header_and_the_two_identity_columns_stay_put
0.08s setup    tests/test_table.py::test_a_clamped_cell_says_what_it_is_hiding_before_it_says_how_to_edit_it
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1393]
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a record filed one directory deeper than records live]
0.08s setup    tests/test_table.py::test_a_status_is_a_chip_and_the_id_cell_holds_only_the_id
0.08s setup    tests/test_table.py::test_a_row_with_no_title_is_never_sent
0.08s setup    tests/test_table.py::test_assignees_is_a_column_and_a_filter_and_a_value
0.08s setup    tests/test_table.py::test_one_edit_sends_exactly_one_field
0.08s setup    tests/test_table.py::test_an_editable_cell_shows_it_and_a_derived_one_says_why_not
0.08s setup    tests/test_table.py::test_a_row_can_be_moved_without_a_mouse
0.08s setup    tests/test_table.py::test_the_created_row_is_re_read_rather_than_invented
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1600]
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1100]
0.08s setup    tests/test_table.py::test_a_dragged_table_still_fits_the_window_it_is_looked_at_in
0.08s setup    tests/test_table.py::test_the_save_uses_the_commit_the_page_was_rendered_at
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a cycle record whose YAML never closes]
0.08s setup    tests/test_table.py::test_a_row_that_may_hold_it_says_so_before_the_mouse_arrives
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1091]
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1280]
0.08s setup    tests/test_graph_layout.py::test_an_edge_that_crosses_a_card_is_drawn_under_it
0.08s call     tests/test_cascade.py::test_a_drawn_mark_has_a_size_of_its_own[draft-create]
0.08s setup    tests/test_table.py::test_only_a_cell_with_something_in_the_way_is_tinted
0.08s setup    tests/test_table.py::test_the_route_the_table_re_reads_is_the_payload_it_was_drawn_from
0.08s setup    tests/test_table.py::test_a_problem_still_comes_first_and_a_long_list_is_capped
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[2560]
0.08s setup    tests/test_table.py::test_a_drop_is_one_patch_of_one_field_through_the_save_path
0.08s setup    tests/test_table.py::test_the_grouping_of_problems_is_written_once
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a config file whose YAML never closes]
0.08s setup    tests/test_table.py::test_a_half_filled_row_is_not_remembered_anywhere
0.08s setup    tests/test_table.py::test_a_column_goes_only_when_the_one_before_it_was_not_enough
0.08s setup    tests/test_table.py::test_the_id_is_shown_and_is_never_a_control
0.08s call     tests/test_cascade.py::test_a_drawn_mark_has_a_size_of_its_own[draft-cancel]
0.08s setup    tests/test_table.py::test_a_column_header_is_the_label_map_s_word_for_the_field
0.08s setup    tests/test_table.py::test_the_count_says_how_many_rows_there_are_to_be_shown_of
0.08s setup    tests/test_table.py::test_the_kind_is_chosen_first_and_the_row_follows_from_it
0.08s setup    tests/test_table.py::test_the_editor_a_cell_opens_says_what_it_is_editing
0.08s setup    tests/test_table.py::test_a_row_says_which_entity_it_is_and_a_cell_says_which_field
0.08s setup    tests/test_table.py::test_the_row_says_which_columns_it_cannot_be_typed_into_and_why
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a pitch whose reviewers are a map]
0.08s setup    tests/test_table.py::test_the_default_fit_never_needs_a_horizontal_scrollbar
0.08s setup    tests/test_table.py::test_the_table_sizes_itself_to_its_contents_and_the_window
0.08s setup    tests/test_table.py::test_the_table_ends_in_a_row_that_makes_one
0.08s setup    tests/test_table.py::test_the_suggestion_popup_announces_itself
0.08s setup    tests/test_table.py::test_a_cell_can_be_edited_without_a_mouse
0.08s setup    tests/test_table.py::test_the_server_refusal_is_shown_and_not_swallowed
0.08s setup    tests/test_table.py::test_a_committed_save_advances_the_page_base_commit
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1366]
0.08s setup    tests/test_table.py::test_the_page_never_reports_its_own_write_to_itself
0.08s call     tests/test_writes.py::test_a_save_addresses_the_row_it_was_pressed_on
0.08s setup    tests/test_table.py::test_the_blocking_count_is_a_link_that_pluralises_and_mutes_at_zero
0.08s setup    tests/test_table.py::test_the_narrow_layout_drops_the_columns_that_are_lookups
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1500]
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a cycle record with no start date]
0.08s setup    tests/test_table.py::test_the_bold_column_is_the_one_being_sorted_by
0.08s setup    tests/test_table.py::test_the_table_draws_its_rows_in_a_browser_that_refuses_storage
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a task file whose YAML never closes its flow sequence]
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[900]
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a file with no kind, whose id names no kind either]
0.08s setup    tests/test_table.py::test_clearing_the_filters_is_a_button_and_never_a_form_field
0.08s call     tests/test_web.py::test_a_plan_that_already_holds_a_loop_still_loads
0.08s setup    tests/test_table.py::test_no_kind_is_given_a_rule_of_its_own
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a size that is a word]
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a frontmatter that is a list rather than a map]
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a cycle number that is a word]
0.08s setup    tests/test_table.py::test_no_window_leaves_the_table_scrolling_sideways_by_choice[1353]
0.08s setup    tests/test_table.py::test_a_sortable_header_is_a_button_that_says_which_way_it_sorts
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a task file with no frontmatter at all]
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a holiday that is not a date]
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a task whose frontmatter is only a comment]
0.08s call     tests/test_gitdoor.py::test_the_rest_of_the_plan_is_still_on_the_page[a schema_version that is a word]
0.08s setup    tests/test_table.py::test_the_table_offers_a_way_to_create_an_entity
0.08s setup    tests/test_seats.py::test_the_next_session_is_one_seat_not_two
0.08s call     tests/test_headers.py::test_the_page_carries_the_policy_the_server_sends
0.08s call     tests/test_web.py::test_every_write_a_page_makes_is_announced_before_and_after_it[/graph]
0.08s call     tests/test_web.py::test_no_page_declares_one_name_twice[/graph]
0.07s call     tests/test_writes.py::test_a_refused_pick_leaves_the_list_open_with_the_reason_beside_it
0.07s setup    tests/test_graph_layout.py::test_the_grouping_holds_on_a_plan_larger_than_the_real_one
0.07s setup    tests/test_card.py::test_the_three_views_draw_the_same_card
0.07s setup    tests/test_delete.py::test_it_takes_two_presses_and_the_first_one_writes_nothing
0.07s call     tests/test_writes.py::test_a_pick_made_with_the_keyboard_is_sent_stored_and_shown
0.07s call     tests/test_writes.py::test_the_listbox_opens_moves_under_the_arrows_and_closes_on_escape
0.07s setup    tests/test_seats.py::test_the_second_surface_says_it_cannot_draw_where_anybody_is
0.07s setup    tests/test_card.py::test_a_pointer_passing_over_a_row_does_not_open_a_card
0.07s setup    tests/test_hill.py::test_the_hill_takes_a_keyboard
0.07s call     tests/test_injection.py::test_the_combobox_popup_does_not_let_a_suggestion_become_markup[table]
0.07s setup    tests/test_seats.py::test_somebody_elses_keystroke_leaves_the_numbers_counting_the_document_there_is_now
0.07s setup    tests/test_seats.py::test_two_people_get_two_colours_and_two_places
0.07s call     tests/test_cascade.py::test_a_bar_and_the_key_that_names_it_are_drawn_the_same_way
0.07s setup    tests/test_card.py::test_the_card_can_be_reached_and_stays_while_the_pointer_is_in_it
0.07s setup    tests/test_seats.py::test_nobody_is_drawn_a_band_for_themselves
0.07s setup    tests/test_card.py::test_the_card_says_the_things_a_row_does_not
0.07s call     tests/test_web.py::test_a_cycle_card_says_the_bet_against_the_capacity
0.07s call     tests/test_records.py::test_the_header_row_is_sticky_and_nothing_on_this_page_outranks_it
0.07s setup    tests/test_seats.py::test_this_tab_says_where_it_is_sitting
0.07s setup    tests/test_seats.py::test_a_seat_band_lands_on_the_right_line_at_a_width_that_wraps
0.07s setup    tests/test_card.py::test_the_document_is_drawn_under_the_fields
0.07s call     tests/test_table.py::test_the_popup_a_cell_opens_hangs_off_the_body_and_not_off_the_cell
0.07s call     tests/test_injection.py::test_the_table_draws_its_rows_without_letting_a_field_become_markup
0.07s setup    tests/test_facets.py::test_an_open_menu_is_not_painted_over[graph]
0.07s setup    tests/test_card.py::test_a_nine_hundred_word_document_does_not_cover_the_table
0.07s setup    tests/test_seats.py::test_a_reader_holds_no_seat
0.07s setup    tests/test_hill.py::test_dragging_the_ball_lands_on_a_stop
0.07s setup    tests/test_facets.py::test_an_open_menu_is_not_painted_over[timeline]
0.07s setup    tests/test_hill.py::test_cancelling_an_edit_rolls_the_ball_back
0.07s setup    tests/test_delete.py::test_the_panel_says_what_the_delete_will_take_with_it
0.07s setup    tests/test_delete.py::test_a_refusal_is_shown_where_the_question_was_asked
0.07s setup    tests/test_facets.py::test_a_link_opens_with_its_boxes_ticked
0.07s setup    tests/test_hill.py::test_the_ball_follows_the_field_when_something_else_sets_it
0.07s setup    tests/test_delete.py::test_a_leaf_record_asks_a_plain_question
0.07s setup    tests/test_card.py::test_the_card_arrives_in_one_piece
0.07s setup    tests/test_card.py::test_one_card_holds_one_document
0.07s setup    tests/test_facets.py::test_an_open_menu_is_not_painted_over[table]
0.07s setup    tests/test_hill.py::test_pressing_a_stop_moves_the_ball_and_the_form
0.07s setup    tests/test_graph_layout.py::test_a_card_stays_where_it_was_dragged
0.07s setup    tests/test_hill.py::test_a_cancelled_drag_puts_the_ball_back
0.07s setup    tests/test_facets.py::test_the_people_page_honours_both_values_too
0.07s call     tests/test_writes.py::test_an_availability_that_is_not_a_number_is_refused_rather_than_dropped[50%]
0.07s setup    tests/test_graph_layout.py::test_the_two_key_rows_are_one_length_and_sit_on_the_drawing
0.07s setup    tests/test_delete.py::test_delete_leaves_while_an_edit_is_open
0.07s call     tests/test_table.py::test_the_reveal_line_cannot_smuggle_markup_into_the_cell
0.07s setup    tests/test_card.py::test_the_document_is_fetched_on_hover_and_not_shipped_with_the_rows
0.07s setup    tests/test_graph_layout.py::test_a_card_wears_both_its_marks_in_front_of_its_name
0.07s setup    tests/test_delete.py::test_the_commit_bar_is_not_on_screen_when_there_is_nothing_to_commit
0.07s call     tests/test_issues.py::test_the_seed_corpus_issues_load_as_records_off_the_plan
0.07s call     tests/test_gitdoor.py::test_a_file_below_the_directory_does_not_claim_the_id_above_it
0.07s setup    tests/test_card.py::test_a_card_at_the_edge_of_the_window_stays_inside_it
0.07s call     tests/test_web.py::test_every_cycle_the_plan_names_is_on_the_index
0.07s setup    tests/test_delete.py::test_the_delete_under_a_record_is_the_delete_of_that_record
0.07s call     tests/test_injection.py::test_the_table_cell_editor_does_not_let_a_stored_value_become_markup
0.07s setup    tests/test_card.py::test_a_box_answers_for_its_label_and_not_for_its_acres
0.07s setup    tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[records]
0.07s setup    tests/test_card.py::test_a_document_that_arrives_late_is_not_drawn_on_the_wrong_card
0.07s setup    tests/test_seats.py::test_the_room_draws_a_band_where_somebody_else_is
0.07s setup    tests/test_card.py::test_a_refused_document_costs_the_document_and_nothing_else
0.07s setup    tests/test_hill.py::test_the_ball_is_painted_where_the_geometry_says
0.07s setup    tests/test_deck.py::test_a_record_that_is_only_its_bet_falls_back_to_what_it_was_going_to_do
0.07s setup    tests/test_card.py::test_a_rendered_file_draws_a_card_with_no_server_to_ask
0.07s setup    tests/test_hill.py::test_the_status_row_is_a_hill_and_the_dropdown_is_gone
0.07s setup    tests/test_search.py::test_an_unknown_field_matches_nothing_rather_than_everything
0.07s setup    tests/test_coedit.py::test_a_real_browser_opens_the_socket_under_this_policy_and_draws_the_room
0.07s setup    tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[table]
0.07s setup    tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[people]
0.07s setup    tests/test_deck.py::test_no_slide_in_the_shipped_demo_is_a_heading_over_an_empty_page
0.07s setup    tests/test_delete.py::test_the_question_names_the_record_it_is_about
0.07s setup    tests/test_hill.py::test_the_card_draws_the_hill_and_keeps_the_word
0.07s setup    tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[cycle]
0.07s call     tests/test_cascade.py::test_the_timeline_still_says_which_of_its_two_controls_is_the_verb
0.07s setup    tests/test_hill.py::test_a_word_the_card_does_not_know_gets_no_ball_either
0.07s setup    tests/test_delete.py::test_delete_stands_beside_edit_and_wears_what_edit_wears
0.07s setup    tests/test_search.py::test_adjacent_terms_are_anded
0.07s call     tests/test_notes.py::test_the_shipped_demo_carries_notes_that_load
0.07s setup    tests/test_search.py::test_two_tags_can_be_asked_for_at_once
0.07s setup    tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[timeline]
0.07s setup    tests/test_search.py::test_parentheses_change_the_answer
0.07s setup    tests/test_search.py::test_a_bare_word_is_a_substring_of_the_searchable_text
0.07s call     tests/test_injection.py::test_no_page_is_assembled_by_substitution
0.07s setup    tests/test_delete.py::test_only_somebody_the_server_would_take_a_write_from_is_offered_the_button
0.07s setup    tests/test_hill.py::test_the_read_only_hill_has_no_stops_on_it
0.07s call     tests/test_writes.py::test_a_conflict_saving_the_setup_says_what_moved
0.07s call     tests/test_cli.py::test_the_demo_is_drawn_around_the_day_its_own_corpus_calls_today
0.07s call     tests/test_web.py::test_every_write_a_page_makes_is_announced_before_and_after_it[/table]
0.07s call     tests/test_index.py::test_a_pr_reference_is_searchable
0.07s setup    tests/test_search.py::test_not_takes_records_away
0.07s setup    tests/test_facets.py::test_no_two_scripts_on_a_page_declare_the_same_name[graph]
0.07s setup    tests/test_coedit.py::test_a_draft_against_a_room_that_has_moved_is_reported_and_not_thrown_away
0.07s setup    tests/test_search.py::test_the_empty_menu_option_is_askable_in_the_language
0.07s call     tests/test_index.py::test_work_running_past_its_cycles_build_is_a_filter
0.07s setup    tests/test_coedit.py::test_what_is_held_for_a_member_who_never_reads_is_bounded
0.07s setup    tests/test_search.py::test_a_pr_is_found_however_it_is_written
0.07s setup    tests/test_search.py::test_a_field_asks_that_field_and_nothing_else
0.07s setup    tests/test_search.py::test_a_malformed_query_says_so_and_matches_nothing
0.07s call     tests/test_cascade.py::test_an_overrunning_bar_still_reads_as_overrunning
0.07s call     tests/test_cli.py::test_the_shipped_demo_corpus_validates_clean
0.07s setup    tests/test_coedit.py::test_a_restored_draft_survives_the_welcome_and_is_offered_to_the_room
0.07s setup    tests/test_coedit.py::test_a_commit_never_deletes_what_was_typed_during_it
0.07s call     tests/test_writes.py::test_a_conflict_on_a_bet_says_what_moved
0.07s call     tests/test_cascade.py::test_the_timeline_window_controls_stand_on_one_line
0.07s setup    tests/test_coedit.py::test_a_room_emptied_by_an_eviction_is_still_committed
0.07s call     tests/test_deck.py::test_a_review_date_nobody_chose_is_not_printed_as_though_somebody_had
0.07s call     tests/test_web.py::test_the_table_renders_the_repository_as_it_is_right_now
0.07s call     tests/test_web.py::test_the_glyph_that_takes_somebody_out_of_a_cycle_says_so_and_asks
0.06s call     tests/test_identity.py::test_the_seed_corpus_reports_no_identity_problem
0.06s call     tests/test_web.py::test_a_cycle_with_no_record_is_a_form_and_says_so
0.06s call     tests/test_web.py::test_every_view_is_served_as_a_page[/table]
0.06s call     tests/test_writes.py::test_every_page_that_writes_reads_a_conflict_the_same_way[cycle]
0.06s call     tests/test_web.py::test_the_bet_lists_what_to_pick_up_before_what_is_running
0.06s call     tests/test_web.py::test_the_bet_table_names_a_status_in_the_colour_every_other_page_uses
0.06s call     tests/test_records.py::test_the_landing_lists_every_record_newest_edit_first
0.06s setup    tests/test_credential.py::test_the_assertion_is_one_github_would_accept
0.06s call     tests/test_writes.py::test_a_receipt_is_not_blanked_by_an_edit_made_before_it
0.06s call     tests/test_editor.py::test_the_goal_is_above_the_bet_and_the_notes_are_below_it
0.06s call     tests/test_writes.py::test_an_availability_that_is_not_a_number_is_refused_rather_than_dropped[]
0.06s call     tests/test_web.py::test_the_roster_is_not_touched_by_somebody_choosing_a_picture
0.06s call     tests/test_writes.py::test_an_availability_that_is_not_a_number_is_refused_rather_than_dropped[0]
0.06s call     tests/test_writes.py::test_the_words_the_server_refused_with_are_the_words_on_the_page
0.06s call     tests/test_writes.py::test_an_availability_that_is_not_a_number_is_refused_rather_than_dropped[half]
0.06s call     tests/test_headers.py::test_every_response_says_what_it_may_do[/timeline]
0.06s call     tests/test_gitdoor.py::test_the_banner_says_how_many_and_why_rather_than_only_that
0.06s call     tests/test_table.py::test_a_window_wider_than_the_plan_gives_the_slack_to_tags
0.06s call     tests/test_records.py::test_a_plan_with_no_records_says_so_from_the_server
0.06s call     tests/test_writes.py::test_a_server_fault_gives_the_cycle_page_back
0.06s call     tests/test_writes.py::test_a_word_typed_into_a_date_box_reaches_the_server_as_the_word
0.06s call     tests/test_table.py::test_a_title_somebody_typed_never_becomes_markup
0.06s call     tests/test_writes.py::test_a_roster_that_is_all_numbers_is_sent_whole
0.06s call     tests/test_deck.py::test_bytes_that_will_not_come_back_cost_the_picture_and_not_the_page
0.06s call     tests/test_writes.py::test_the_same_refusal_twice_is_still_read_out
0.06s call     tests/test_writes.py::test_an_availability_that_is_not_a_number_is_refused_rather_than_dropped[  ]
0.06s call     tests/test_payload.py::test_no_page_ships_a_data_block_that_is_not_json[render_table-.inf]
0.06s call     tests/test_payload.py::test_no_page_ships_a_data_block_that_is_not_json[render_table--.inf]
0.06s call     tests/test_payload.py::test_no_page_ships_a_data_block_that_is_not_json[render_table-.nan]
0.06s call     tests/test_web.py::test_the_proposal_ignores_a_cycle_that_only_an_entity_mentions
0.06s setup    tests/test_table.py::test_a_row_kept_for_context_is_still_a_record
0.06s setup    tests/test_status_gate.py::test_the_gate_the_table_asks_from_is_the_gate_the_server_enforces
0.06s setup    tests/test_table.py::test_the_id_sort_draws_the_plan_depth_first
0.06s call     tests/test_web.py::test_a_cycle_record_reaches_the_pages_it_is_for
0.06s call     tests/test_table.py::test_the_blocking_count_names_the_population_its_link_opens
0.06s setup    tests/test_table.py::test_every_other_column_sorts_flat
0.06s call     tests/test_editor.py::test_nothing_on_the_cycle_page_is_written_until_save
0.06s setup    tests/test_table.py::test_the_connector_that_ends_a_branch_is_the_last_row_drawn
0.06s call     tests/test_web.py::test_a_cycle_number_no_save_would_accept_is_not_a_page[99999]
0.06s call     tests/test_web.py::test_a_write_is_broadcast_to_everybody_watching
0.06s setup    tests/test_status_gate.py::test_giving_up_on_the_question_changes_nothing
0.06s setup    tests/test_status_gate.py::test_a_status_that_needs_a_date_asks_for_it
0.06s setup    tests/test_status_gate.py::test_a_row_that_has_what_the_status_wants_is_not_asked
0.06s call     tests/test_web.py::test_every_write_a_page_makes_is_announced_before_and_after_it[/cycle/1]
0.06s setup    tests/test_table.py::test_the_indent_never_takes_the_drop_target_with_it
0.06s call     tests/test_web.py::test_clearing_an_icon_says_so_in_the_record_rather_than_deleting_it
0.06s setup    tests/test_table.py::test_a_filtered_table_keeps_the_tree_and_counts_only_the_answers
0.06s call     tests/test_web.py::test_a_cycle_number_no_save_would_accept_is_not_a_page[10000]
0.06s call     tests/test_deck.py::test_a_cycle_holding_nothing_says_so_and_offers_the_way_out
0.06s call     tests/test_editor.py::test_picking_a_suggestion_counts_as_typing
0.06s call     tests/test_web.py::test_the_cycle_page_says_what_is_unsaved_and_that_a_save_landed
0.06s call     tests/test_web.py::test_a_cycle_number_no_save_would_accept_is_not_a_page[-1]
0.06s call     tests/test_web.py::test_the_unsaved_count_and_the_receipt_count_the_same_thing
0.06s call     tests/test_web.py::test_the_save_button_is_in_reach_of_the_whole_betting_table
0.06s call     tests/test_editor.py::test_a_write_from_the_cycle_page_is_not_reported_back_as_somebody_else_s
0.06s call     tests/test_web.py::test_a_receipt_the_cycle_page_draws_is_a_receipt_it_announces
0.06s call     tests/test_editor.py::test_capacity_moves_while_the_rate_is_being_typed
0.06s call     tests/test_web.py::test_the_cycle_page_puts_the_forecast_next_to_the_capacity
0.06s call     tests/test_editor.py::test_work_is_autosaved_so_a_dropped_connection_costs_two_minutes
0.06s call     tests/test_editor.py::test_a_cycle_has_a_box_for_what_came_up_at_the_betting_table
0.06s call     tests/test_gitdoor.py::test_one_file_is_said_in_the_singular
0.06s call     tests/test_injection.py::test_no_static_page_lets_a_field_become_markup
0.06s call     tests/test_editor.py::test_taking_somebody_out_of_a_cycle_takes_two_clicks
0.06s call     tests/test_records.py::test_a_filtered_out_row_is_display_none_and_not_merely_marked
0.06s call     tests/test_records.py::test_every_row_carries_the_predicates_the_server_computes
0.06s call     tests/test_web.py::test_no_page_declares_one_name_twice[/timeline]
0.06s call     tests/test_headers.py::test_every_response_says_what_it_may_do[/people]
0.05s call     tests/test_editor.py::test_a_betting_cell_saves_only_what_somebody_typed
0.05s call     tests/test_product.py::test_a_product_draws_no_bar_on_the_timeline
0.05s setup    tests/test_cascade.py::test_every_kind_chip_is_the_same_shape[project]
0.05s call     tests/test_records.py::test_the_page_furniture_stands_outside_the_scroll_box
0.05s call     tests/test_gitdoor.py::test_several_bad_files_are_all_named_rather_than_the_first
0.05s call     tests/test_render.py::test_the_app_moves_in_two_places
0.05s call     tests/test_web.py::test_a_delete_tells_the_open_pages_which_record_went
0.05s call     tests/test_records.py::test_the_who_column_reads_the_field_the_rung_says
0.05s call     tests/test_headers.py::test_every_response_says_what_it_may_do[/graph]
0.05s call     tests/test_web.py::test_a_person_record_is_one_directory_deep_and_no_deeper
0.05s call     tests/test_web.py::test_a_record_that_does_not_read_is_not_written_over_and_costs_one_person
0.05s call     tests/test_web.py::test_a_backwards_window_does_not_invert_the_drawing
0.05s call     tests/test_web.py::test_every_view_is_served_as_a_page[/timeline]
0.05s call     tests/test_web.py::test_a_timeline_view_is_a_link
0.05s call     tests/test_table.py::test_no_template_comment_reaches_the_page[/timeline]
0.05s call     tests/test_cli.py::test_schedule_json_round_trips
0.05s call     tests/test_editor.py::test_the_graph_explains_its_mode_once_and_beside_the_button
0.05s call     tests/test_cli.py::test_schedule_accepts_an_explicit_today
0.05s call     tests/test_writes.py::test_every_page_that_writes_reads_a_conflict_the_same_way[cycles]
0.05s call     tests/test_table.py::test_no_template_comment_reaches_the_page[/graph]
0.05s setup    tests/test_cascade.py::test_a_conflict_report_is_a_report_on_the_table_as_well_as_the_detail_page
0.05s setup    tests/test_cascade.py::test_every_kind_chip_is_the_same_shape[task]
0.05s call     tests/test_index.py::test_the_seed_index_carries_the_scheduler_and_validator_output
0.05s setup    tests/test_cascade.py::test_the_timeline_window_controls_stand_on_one_line
0.05s setup    tests/test_cascade.py::test_a_bar_and_the_key_that_names_it_are_drawn_the_same_way
0.05s call     tests/test_render.py::test_the_nav_says_which_page_you_are_on
0.05s setup    tests/test_cascade.py::test_a_drawn_mark_has_a_size_of_its_own[draft-cancel]
0.05s call     tests/test_injection.py::test_the_combobox_popup_does_not_let_a_suggestion_become_markup[cycle 41]
0.05s call     tests/test_cli.py::test_check_exits_non_zero_when_the_repository_has_blockers
0.05s setup    tests/test_cascade.py::test_a_link_that_is_a_control_is_drawn_as_one_on_every_page
0.05s setup    tests/test_render.py::test_a_rendered_block_carries_the_source_line_it_came_from
0.05s setup    tests/test_cascade.py::test_the_nav_marks_where_you_are_even_on_a_link_you_have_already_used
0.05s setup    tests/test_index.py::test_the_has_blocker_predicate_is_the_strict_half_of_missing_required_fields
0.05s setup    tests/test_cascade.py::test_every_kind_chip_is_the_same_shape[pitch]
0.05s setup    tests/test_cascade.py::test_the_row_a_pages_own_controls_stand_in_is_a_row_on_every_page
0.05s setup    tests/test_render.py::test_the_progress_column_appears_only_once_a_plan_has_a_checklist
0.05s setup    tests/test_index.py::test_the_seed_incomplete_entities_are_the_ones_missing_fields
0.05s setup    tests/test_cascade.py::test_the_timeline_still_says_which_of_its_two_controls_is_the_verb
0.05s setup    tests/test_cascade.py::test_a_drawn_mark_has_a_size_of_its_own[draft-create]
0.05s setup    tests/test_cascade.py::test_every_commit_bar_sticks_to_the_same_edge_and_one_rule_decides_it
0.05s setup    tests/test_render.py::test_the_solid_rule_is_the_end_of_build_and_the_dashed_one_the_end_of_the_window
0.05s setup    tests/test_index.py::test_the_seed_diamond_reverses_into_blocks

(3954 durations < 0.05s hidden.)
