Pages suite - 415 pages, 543 tests, 0 failed

415 pages, 543 tests, 0 failed - all ok

Every test here is an ordinary page, fetched over HTTP with &padInclude so it renders bare, and compared with the outcome written beside it. That makes it a real request, with a page's own .php half in scope for its .pad half. These tests live in apps/regression/pages/, which has _common switched off, so each one also proves it needs nothing but its own application; the pages that use _common are the Common suite.

page what it checks status
blocks/extended ok
blocks/extendedframe ok
blocks/framed ok
blocks/page ok
callback The row phase of a streaming callback, which reads the occurrence fields as plain variables ok
catalog/functions One line per pipe function over a stated value ok
catalog/handling The data handling options, each over a list whose answer is obvious ok
catalog/options One line per tag option, including the ones that assert being inert ok
catalog/prefixes One line per type prefix, each in its literal spelling ok
catalog/properties Every property and @ reference form on one page ok
catalog/tags One line per built-in tag no other page reaches - the catalogue half of the reference coverage ok
catalog/volatile The two draws - {ajax} ids and now - pinned by shape in one regex ok
db/a_database_tag_binds_a_value_put_in_as_name ok
db/a_database_tag_called_as_a_function_binds_a_value_put_in_as_name ok
db/a_database_tag_with_nothing_spliced_runs_whatever_the_page_printed_before A database tag with nothing spliced into its SQL runs, whatever text the page printed before it - its sort order, a guestbook entry ok
db/a_float_read_from_the_database_is_bound_back_as_the_same_number A float from the database bound back - a db() placeholder, a $name of a database tag - is the same number, not its 14 significant digits, and a whole one stays a count after LIMIT ok
db/a_formatted_or_empty_record_is_still_a_record ok
db/a_locking_read_takes_its_limit_before_the_lock ok
db/a_named_query_with_replace_or_a_write_word_in_a_literal_reads ok
db/a_null_of_the_enclosing_row_is_bound_as_null A NULL column of the enclosing row is NULL in the SQL it goes into - a $name of a database tag, the relation a nested select follows - not the empty text ok
db/a_number_or_a_value_in_a_quoted_literal_spliced_into_a_database_tag_stays_a_value A value spliced into the SQL of a database tag with {$name} is refused outside a quoted literal, but a plain number stands as itself and a value inside a quoted literal is text ok
db/a_one_row_limit_sees_past_a_trailing_comment ok
db/a_page_array_sharing_a_record_s_columns_is_no_record ok
db/a_read_without_select_answers_its_rows ok
db/a_record_formatted_past_a_thousand_is_still_a_record ok
db/a_record_is_known_in_time_however_many_were_read ok
db/a_sandbox_lets_a_named_query_miss_a_field_it_hid ok
db/an_array_with_a_float_id_keeps_every_row ok
db/array The db() array command through a page variable, and the else branch when nothing matches ok
db/array2 The same through the {array} tag, which hands its parameter to db() as the command word ok
db/check The db() check command, which answers whether a row exists rather than returning one ok
db/check2 The same through the {check} tag ok
db/field The db() field command, which returns one value ok
db/field2 The same through the {field} tag ok
db/field_as_function ok
db/named ok
db/own_limit ok
db/placeholder_after_a_non_ascii_name A statement with an unquoted name outside ASCII - naïef - fills its placeholders as any other ok
db/placeholder_comment ok
db/placeholder_minus_inside_quotes The space that keeps a bare negative number from a -- comment goes outside quotes only - A-{0} quoted stays A--1 ok
db/placeholder_numeric_text A bare placeholder holding numeric text is text on MySQL - name = {0} with 0 matches no name - and a count in a limit ok
db/placeholder_numeric_text_counts_and_positions Numeric text is a number where MySQL wants one - an ORDER BY position, a FETCH NEXT count - as after LIMIT ok
db/placeholder_offset_column_and_frame A column named offset is no OFFSET clause, and a window frame bound - ROWS BETWEEN {0} PRECEDING - is a number ok
db/placeholder_position_follows_the_clause An ORDER BY / GROUP BY position is read from the clauses and brackets - not in a UNION select list, still after field(...), in a list of any length ok
db/placeholders db() placeholders - a bare one quotes a value that is not a number, a quoted one escapes, an array becomes a list, and nothing is filled twice ok
db/record The db() record command, which returns one row ok
db/record2 The same through the {record} tag ok
db/record_changed ok
db/record_twice ok
db/sqlite_binds_a_name_after_a_literal_ending_in_a_backslash ok
db/sqlite_insert_of_no_new_row_answers_no_id ok
db/sqlite_insert_whose_id_repeats_answers_it ok
db/sqlite_numeric_text_keeps_its_zeros ok
db/verb_whitespace ok
file/data_is_not_served ok
file/done The page a file-output request lands on, reporting the name it was handed ok
file/file The {file} tag writing four files, with date, stamp and id naming them ok
file/index Output type file: the page is written to disk and the request restarts on file/done ok
flush/a_tidy_marker_above_a_flush_is_taken_out An in the part a {flush} sends early is taken out, as from the rest of the page ok
flush/a_tidy_marker_below_a_flush_leaves_the_rest_as_rendered An below a {flush} is taken out and tidy does not run over the rest - one document, as rendered ok
flush/a_toc_above_a_flush_lists_the_headings_below_it A {toc} in the part a {flush} would send holds every flush back: the toc lists the headings below it, no marker goes out ok
flush/auth A logged-in visitor below a {flush}: still logged in, the session opened before the headers went ok
flush/auth_inner The flushed page flush/auth asks with a session - on its own a guest ok
flush/auth_login The login flush/auth comes back with ok
flush/csrf ok
flush/csrf_base ok
flush/csrf_split ok
flush/early ok
flush/embedded ok
flush/fragment ok
flush/live ok
flush/livepage ok
flush/login A login below a {flush} on an open session: refused, the id cannot be renewed ok
flush/login_inner The login flush/login asks for - on its own it logs in ok
flush/logout A logout below a {flush} while a remember-me cookie stands: refused, the cookie cannot be dropped ok
flush/logout_inner The logout flush/logout asks for - on its own it logs out ok
flush/nosession ok
flush/pdf ok
flush/pdf_named_preview ok
flush/slow ok
flush/tidybelow The fixture of flush/a_tidy_marker_below_a_flush_leaves_the_rest_as_rendered, fetched bare: the page, the marker gone ok
flush/timing ok
format/a_csv_answer_of_a_record_or_of_objects_is_a_table A CSV answer of a record holding a list is one row, and of json_decode objects a row per object ok
format/a_float_past_the_range_inside_an_object_is_null_in_a_json_answer INF and NAN inside an object - a cast array, a json_decode row, a JsonSerializable - are null in a JSON answer as inside an array, never the 0 of a partial output ok
format/a_float_past_the_range_is_null_in_a_json_answer A float past the range - INF, -INF, NAN - is null in a JSON answer, as JSON.stringify writes it, never the 0 of a partial output; the CSV keeps INF ok
format/a_text_that_is_no_utf8_is_kept_in_a_json_answer A value with a byte that is no UTF-8 is kept in a JSON answer, the byte as U+FFFD - never null ok
format/answers ok
format/cells ok
format/cells_csv ok
format/host ok
format/infinite The fixture of format/a_float_past_the_range_is_null_in_a_json_answer, fetched bare: its page, and {^big} null ok
format/infobjects The fixture of format/a_float_past_the_range_inside_an_object_is_null_in_a_json_answer, fetched bare: {^field} over objects holding INF and NAN, null at any depth ok
format/latin The fixture of format/a_text_that_is_no_utf8_is_kept_in_a_json_answer, fetched bare: its page ok
format/orders ok
format/output ok
format/records The fixture of format/a_csv_answer_of_a_record_or_of_objects_is_a_table, fetched bare: its page ok
format/scalar ok
forms/a_form_htmx_posts_to_its_own_directory_keeps_its_rules/index A form with rules that htmx posts to its directory name - the address of this index - renders, its rules checked there ok
forms/a_textarea_keeps_the_blank_line_its_value_starts_with A text area writes a line break after its opening tag, which the HTML parser drops - a value starting with a blank line keeps it ok
forms/client_parity ok
fragments/a_fragment_answers_without_the_developer_helpers A page with the toolbar, live reload and the output check on carries the bar, the script and the panel as a whole page, and none of them in the answer to its fragment - asked by padFragment or by htmx in HX-Target ok
fragments/byurl ok
fragments/cached ok
fragments/cachedbyurl ok
fragments/helpers The fixture for fragments/a_fragment_answers_without_the_developer_helpers: the three helpers on, a fragment with an image the output check names - fetched bare, its panel follows the page ok
fragments/list ok
fragments/missing ok
fragments/target The fixture for fragments/targets: a page with one fragment between other HTML ok
fragments/targets An htmx request answered by the fragment named like the element it swaps (HX-Target) - the whole page when there is none or htmx did not ask, and padFragment winning over the header ok
functions/date The date function over a timestamp, a format and a strtotime modifier ok
globals object: over a page variable, which in a request is a global like any other ok
hello/index The smallest page pair there is, and the one redirect and restart land on ok
helpers/cache_sweep_spares_a_fresh_entry ok
helpers/cache_sweep_spares_a_fresh_entry_put ok
helpers/cache_sweep_spares_a_fresh_entry_sweep ok
helpers/requests_abort ok
helpers/requests_abort_go ok
helpers/requests_back ok
helpers/requests_back_fallback ok
helpers/requests_input ok
helpers/requests_input_echo ok
helpers/requests_method_any_token ok
helpers/requests_method_show ok
helpers/requests_old ok
helpers/requests_old_form ok
helpers/requests_session ok
helpers/requests_session_put ok
helpers/requests_session_read ok
helpers/requests_session_regenerate ok
helpers/requests_session_regenerate_makes_a_new_csrf_token ok
helpers/signing_checks_the_request ok
helpers/signing_encodes_the_page_in_the_link ok
helpers/signing_refuses_a_body_that_names_a_signed_value ok
helpers/signing_refuses_a_json_key_that_walks_into_a_signed_value ok
helpers/signing_route/[name] ok
helpers/signing_target ok
htmlboth A page with both a .pad and an .html - the .pad wins ok
htmlonly An .html page with no .php half, carrying a tag of its own ok
htmlpage An .html file as the template half of a pair - variables, pipes, a loop and a property all resolve in it ok
live/a_posting_form_in_a_live_answer_keeps_its_csrf_token A posting form in a {live} region under $padCsrf carries the token in the answer to an event as in the page ok
live/counter ok
live/csrf ok
live/form The fixture of live/a_posting_form_in_a_live_answer_keeps_its_csrf_token, fetched bare: the region, its form with the token ok
mail/a_header_written_as_a_quoted_text_with_a_field_is_its_plain_text ok
mail/a_mail_rendered_first_leaves_the_page_its_style ok
mail/a_mail_template_takes_out_its_start_and_end ok
mail/a_pdf_in_a_mail_leaves_the_page_a_page ok
mail/addresses_with_a_comma_in_a_quoted_name ok
mail/addresses_with_a_stray_quote_or_a_long_quoted_name ok
mail/file ok
mail/from ok
mail/tags ok
manual/z99 A page whose .php returns a string, which the build prepends to the page ok
meta/framed ok
meta/page ok
misc/bench The benchmark history: the slower verdict over made-up runs, a kept run read back, the chart ok
misc/bootstrap_failure ok
misc/curl_stale A source that fails past the ttl: the last good copy is served ok
misc/curl_stale_expired ok
misc/datatypes The html and range data types: a tidied document walked to its values, and both range spellings ok
misc/local Reading a file from _data/ by name, in each format padData() accepts ok
misc/local_yml ok
misc/nocurl_reads_web_urls_only Without ext-curl padNoCurl fetches http and https only - a file:// URL is the 999 failure ok
misc/parms Parameters, options and variables on a tag, over a PHP array, a constant and a store ok
misc/pdf_preview_alone A {pdf preview} written as a single tag: the page with its links to open and download the document ok
misc/pdf_preview_alone_document The document misc/pdf_preview_alone answers when asked: the page, without the preview's own links in it ok
misc/react The {reactData} tag over a static provider, and the @providers reference reading the parked result back ok
misc/react_id ok
misc/react_keeps_its_data_with_a_byte_that_is_no_utf8 A {reactData} provider whose text holds a byte that is no UTF-8 - a Latin-1 Caf\xE9 - keeps its data, the byte as U+FFFD: the JSON came back FALSE, and the attribute empty ok
misc/react_types ok
misc/tidied ok
misc/tidy ok
misc/tidy_unclosed ok
misc/trace The {trace} tag wrapping a scope in the execution trace ok
noted/frames An @page@ inside a comment of a wrapper marks nothing - one beside the real marker, and one in a wrapper that has no other ok
noted/only/inner ok
noted/two/inner ok
override/a_bare_built_in_name_runs_the_application_s_own_function An application function named as a built-in one stands in for it, also as a bare pipe name ok
pagekey_shown ok
pagekey_value ok
pagetag ok
pairing A page pair: the .php half fills in what the .pad half prints ok
phponly A page with no template at all - what its .php echoes is the page ok
request/a_clean_url_with_a_comma_or_semicolon_in_a_directory_answers_a_returning_visitor A visitor sending an old and a new identity pair asks a clean URL with a , or ; in a directory segment: the page answers and the expiry passes over the path setcookie cannot write ok
request/a_fetch_for_a_visitor_at_any_address_is_not_local ok
request/a_fetch_of_this_site_by_another_name_is_not_local ok
request/a_fetch_the_engine_makes_for_a_visitor_is_not_local ok
request/a_fetch_without_ext_curl_follows_a_redirect_of_this_site ok
request/a_fetch_without_ext_curl_keeps_the_pin_and_the_post ok
request/a_field_a_post_leaves_out The fixture of request/a_field_a_post_leaves_out_is_checked_from_the_query_string bare: an empty form, not stored ok
request/a_field_a_post_leaves_out_is_checked_from_the_query_string A field the post leaves out is read from the query string, so the rules check it there - website=javascript:..., plan=enterprise and role=admin in the address refused, good values passed ok
request/a_guard_reading_the_user_after_padauthrequire_ends_at_the_refusal In the guard of a {page}-included page padAuthRequire ends the guard for a guest, so a line reading the user after it never runs and the part renders as nothing ok
request/a_guard_that_swallows_the_refusal_of_a_part_still_refuses_it A guard of a {page}-included page that catches the refusal of padAuthRequire or padAuthorize - padRescue, a try/catch - and returns TRUE is refused all the same: the part renders as nothing ok
request/a_guarded_page_named_as_content_renders_nothing_when_refused A page below a _guard.php named by content= or else= is asked of its guard as a {page} is - refused, it renders as nothing ok
request/a_json_body_address_is_refused An address posted as a JSON body is a request value - refused as a form post of it is ok
request/a_part_whose_guard_asks_for_a_login_renders_nothing_for_a_guest A page included by {page} whose _guard.php calls padAuthRequire or padAuthorize renders as nothing when refused, where the whole public page was sent to the login or answered 403 ok
request/a_plain_php_application_answers_404_for_up_and_the_sitemap The plain-PHP application nono asked for ?up, ?sitemap.xml and ?robots.txt it has no page for: the 404 of any page that is not there, not a boot error on the stand-in page ok
request/a_plain_php_application_leaves_the_sitemap_and_up_to_the_engine A plain-PHP application with a root [slug].php and the sitemap and health check on answers robots.txt, sitemap.xml and up as the engine, any other name by the route ok
request/a_post_that_fails ok
request/a_redirect_carries_a_list_as_the_query_writes_it The values padRedirect and {redirect} carry go into the query as padUrl writes them - a list as ids[0]=1&ids[1]=2, a NULL left out, a name with & encoded ok
request/a_redirect_to_a_name_with_a_line_break_encodes_it A line break in the page name padRedirect is handed from the request percent-encoded in a 302 - no header added, no 500 ok
request/a_redirect_whose_target_holds_a_field_sends_the_field_s_text ok
request/a_request_value_never_decides_what_a_tag_is Request values named like a constant, a sequence, a _data file, a pipe or PHP function the template writes as a tag or a pipe: each stays what the template wrote, a page variable and a name nothing else claims stay fields ok
request/a_stored_file_larger_than_the_memory_limit_is_sent_whole padUploadSend streams a stored file of sixteen megabytes whole from a request allowed ten more than it uses - it was read into one string, a 500 past memory_limit ok
request/a_trace_then_an_error ok
request/an_error_after_a_trace_tag_keeps_its_report ok
request/an_error_after_the_answer_stays_out_of_it ok
request/an_exported_page_carries_nothing_only_this_machine_sees pad export renders on the command line, local to padLocal, for a copy any visitor reads: a page whose own PHP switches the toolbar, live reload and the output check on, with a {debug} box, carries all four to this machine and none into the export ok
request/an_exported_page_fetches_this_site_as_this_machine A page pad export renders keeps this machine's standing for what it fetches of its own site - only the developer's helpers stay out of the copy ok
request/an_exported_page_fetches_this_site_without_the_developers_view A page pad export renders fetches a page of its own site whose PHP switches the toolbar, live reload and the output check on, with a {debug} box: none of the four comes back into the copy ok
request/an_identity_cookie_sent_once_is_not_expired A padReqID and padSesID sent once each are the only copies: a clean-URL request sends no expiring Set-Cookie, only the new padReqID ok
request/an_old_identity_cookie_of_a_directory_below_the_application_is_expired A padReqID and padSesID kept on a directory below the application are expired there and on each directory between, the session id going on on the application directory ok
request/answered_then_failed ok
request/at_superglobals ok
request/auth_intended A guest sent from a page for the logged-in to the login page, and the login sending them back to the page and values first asked - once ok
request/body The raw-body fixture bare: an empty php://input ok
request/caught/box ok
request/club/box ok
request/contact ok
request/contact_valid The demo contact form posted without a mistake: stored, redirected, thanked - the store put back ok
request/cookie A cookie sent with the request, read from $_COOKIE by the fixture ok
request/crumb The fixture for request/crumbs, fetched bare: no cookie, nothing promoted ok
request/crumbs A cookie, a pq-named and an _-named request value sent to the fixture, none of which becomes a variable ok
request/csrf ok
request/debugged_inner ok
request/demo_takes_a_list_field_as_no_text The demo forms take a field posted as a list (name[]=x) as no text - no 500, nothing stored ok
request/editors/box ok
request/etag_post ok
request/etag_target ok
request/every_engine_cookie_of_an_https_site_is_secure The session, flash and padReqID cookies are Secure on an https site - behind a proxy that ends TLS ($padHostBase https) and under session.cookie_secure too - and plain on plain http ok
request/exported The fixture for request/an_exported_page_carries_nothing_only_this_machine_sees: the helpers switched on by the page itself, a {debug} box and an image the output check names ok
request/fetchexported The fixture for request/an_exported_page_fetches_this_site_without_the_developers_view: a page that fetches request/exported and names which of the developer's helpers came back ok
request/fetching The fixture for request/an_exported_page_fetches_this_site_as_this_machine: a page that fetches request/standing and shows its answer ok
request/fetching_debugged_inner_at_mapped ok
request/fetching_debugged_inner_at_zero ok
request/fetching_debugged_inner_by_another_name ok
request/field_superglobals ok
request/field_superglobals_sent ok
request/flash ok
request/flash_typed ok
request/flashed ok
request/flashtyped ok
request/form_rules The form rules fixture bare: an empty form, not processed ok
request/form_rules_on_names_php_rewrites ok
request/form_rules_on_names_php_rewrites_post ok
request/form_rules_one_value ok
request/form_rules_one_value_post ok
request/form_rules_post Rules on the fields of the template, checked before the page-s PHP: a post that breaks them comes back refilled with its messages and is not padPosted, an unrendered field is checked too, the page-s own padValidate adds to them ok
request/form_rules_unnamed_posted ok
request/getting_debugged_inner ok
request/gone The fixture for request/statuses: a page that answers 410 itself ok
request/guard ok
request/guarded/inside ok
request/guardpage ok
request/guestbook ok
request/headers ok
request/hostfetch ok
request/hostheader ok
request/hosttarget ok
request/jar The cookie fixture bare: an empty jar ok
request/json_feed The fixture of request/a_json_body_address_is_refused, fetched bare: no address, nothing fetched ok
request/live_answer ok
request/live_csrf ok
request/live_names_are_texts ok
request/live_names_are_texts_post ok
request/livebar ok
request/livecsrf ok
request/members/box ok
request/nocurl_echo ok
request/nonced ok
request/post A real POST through padCurl - the fields travel in the body and arrive as page globals ok
request/rawbody A request body that is no form, posted as text/plain and read back through php://input ok
request/redirect A redirecting page, seen unfollowed - status and destination - and followed to where it lands ok
request/redirect_absolute ok
request/redirect_fragment ok
request/redirect_hash ok
request/redirect_page_fragment ok
request/redirect_query ok
request/reference_names ok
request/remember_keeps_the_form_token ok
request/remember_keeps_the_session_of_a_logged_in_visitor ok
request/rememberform ok
request/rescued/box ok
request/reserved ok
request/router ok
request/router_dir/index ok
request/router_html ok
request/sent The fixture of upload_send bare: the stored text, shown ok
request/ses The session fixture bare: some id, pinned by shape ok
request/session A page fetching another shares its session - the fixture answers with this very request-s id ok
request/session_id_with_a_trailing_newline ok
request/standing The fixture for request/fetching: whom this machine took the request for ok
request/stats ok
request/statuses A missing page answers 404, and a status the page sets with http_response_code() stands ok
request/tagnames The fixture for request/a_request_value_never_decides_what_a_tag_is, fetched bare: what the template means by each name ok
request/the_error_page_shows_no_posted_password ok
request/the_identity_cookies_are_kept_on_the_application_directory padSesID and padReqID on the directory of the entry point, from a clean URL below it as from ?page - not one pair per directory of the address ok
request/todo A whole action round-trip: post a marker through todoPost, see it land, restore the store ok
request/todo_acts_on_a_post_only A GET of todoPost, which carries no CSRF token, adds no task ok
request/up The upload fixture bare: no file ok
request/upload A multipart upload: the payload arrives with its name, size and PHP-s word that it was uploaded ok
request/upload_refuses_a_list_of_files ok
request/upload_send padUploadSend answering a stored file: text shown, the same as a download when asked, HTML always downloaded, a path out of DATA 404 ok
request/upload_take ok
request/uploads ok
request/vars The intake fixture bare: no request vars, so the defaults show ok
routes/ajax_script ok
routes/ajax_segment ok
routes/back/[name] ok
routes/blog/[year]/[slug] ok
routes/docs/[path+] ok
routes/embed ok
routes/get_segment ok
routes/paths ok
routes/products/[id] ok
routes/products/index ok
routes/products/new ok
routes/query_dots ok
routes/redirect_back ok
routes/search ok
routes/search_refill ok
routes/two_ajax_of_one_page_fill_their_own_divs_and_carry_the_nonce ok
sample/capture ok
sample/capture_rows A capture keeps what the page returned as @return ok
sample/missing ok
sample/orders ok
sample/plain ok
sample/remote ok
sample/rows ok
sample/use ok
sample/use_rows The designer preview gives a page that returns its rows the @return of its sample ok
select/demo/a_bound_array_is_a_list An array bound into where= as $name is a list of literals, as in a bare db() placeholder ok
select/demo/a_huge_page_number_is_a_page_past_the_last ok
select/demo/a_joined_fields_is_no_literal fields= must be one quoted literal: an expression that starts with one and joins a variable is refused ok
select/demo/a_joined_where_is_no_literal where= must be one quoted literal: a condition joined from a variable is refused ok
select/demo/a_nested_view_follows_its_base_relation ok
select/demo/a_pager_counts_a_select_with_a_join ok
select/demo/a_pager_counts_the_rows_its_fields_make ok
select/demo/a_view_of_a_view_reaches_the_table_at_the_end ok
select/demo/bound A value bound into where= as $name - a quote stays inside the literal, a comma matches - and a column list bound into order= ok
select/demo/fields_is_written_in_the_template fields= is SQL the template writes, like where=: a column list from a variable is refused ok
select/demo/join The select subsystem walking a declared relation - a join written as nesting ok
select/demo/numeric_text A $name holding numeric text is text in where= on MySQL, so name = $zero with 0 matches no name ok
select/demo/options Every option a declared table takes on the tag - where, order, fields, group, having, rollup, distinctrow, db and union - one labelled line each over the staff table ok
select/demo/pager ok
select/demo/pager_rows ok
select/demo/paging ok
select/demo/sqlite_key_and_relation_match_an_untyped_column ok
select/demo/type_is_a_known_word type= is the statement command word, so a value that tries to be a whole query is refused instead of spliced in ok
select/demo/union A select table declared over a union of several tables ok
select/demo/values ok
select/demo/where_comment A comment with an apostrophe in where= does not stop the $name after it from binding ok
select/support/json A note rather than a test - see _cases/README.md. It does exercise htmlAttrJson ok
select/support/prefix The select: prefix spelling of a declared table, which also says the word the reference matcher looks for ok
select/support/relation_key ok
select/support/test A select table with a relation, read by id ok
select/support/topic A content store merged into a select result through @content@ ok
shown/frames An @page@ inside an {ignore} of a wrapper is text it shows - one beside the real marker, and one in a wrapper that has no other ok
shown/only/inner ok
shown/two/inner ok
sitemap/a_page_beside_a_directory_of_its_name_leaves_the_index_its_full_address A page docs beside a directory docs/ with an index: {sitemap} lists the page at ?docs and the index at ?docs/index, where the router sends it - not both at ?docs ok
sitemap/guarded ok
sitemap/list ok
sitemap/off ok
sitemap/same/docs ok
sitemap/same/docs/index ok
sitemap/site/a ok
sitemap/site/index ok
sitemap/site/locked/c ok
sitemap/site/sub/b ok
sse/browser_every padSse in the browser (padWasm): the every form is one round - the producer called once, the retry the interval ok
sse/browser_loop padSse in the browser: the loop form ends at the first event a tenth of a second after the start, the burst before it sent whole ok
sse/browser_stop padSse in the browser: a producer answering FALSE with nothing sent is answered 204, which stops EventSource ok
sse/every padSse calling the producer on an interval - an array sent as the named event, NULL sending nothing, FALSE ending the stream ok
sse/headers A stream as the browser gets it: text/event-stream, no-cache, no proxy buffering, and the last id back as a header or query value with its line break taken out ok
sse/lastid The fixture for sse/headers: the producer echoes the id the browser came back with ok
sse/limit ok
sse/ticks padSse with a producer that sends its own events - the retry first, a named event with an id and JSON, text over two lines, a plain message ok
stacks/framed ok
stacks/page ok
start/code/increment/base Nine nested {code} passes, each one incrementting the variable ok
start/code/increment/clean Nine nested {code} passes, each one incrementting the variable, with clean ok
start/code/increment/reset Nine nested {code} passes, each one incrementting the variable, with reset ok
start/code/increment/sandbox Nine nested {code} passes, each one incrementting the variable, with sandbox ok
start/code/index The eight {code} variants side by side ok
start/code/set/base Nine nested {code} passes, each one setting the variable ok
start/code/set/clean Nine nested {code} passes, each one setting the variable, with clean ok
start/code/set/reset Nine nested {code} passes, each one setting the variable, with reset ok
start/code/set/sandbox Nine nested {code} passes, each one setting the variable, with sandbox ok
start/combi/index The three combi chains together ok
start/combi1/index A {page} chain mixing the options rather than using one throughout ok
start/combi2/index Another mixture of them ok
start/combi3/index A third mixture ok
start/index Everything under start/ at once - the code, page and combi chains, nested and hello ok
start/page/1/index Nine nested {page} calls setting a variable - with no option it leaks outward ok
start/page/2/index The same chain with sandbox, so each pass has its own scope and the value unwinds ok
start/page/3/index The same chain with reset ok
start/page/4/index The same chain with clean ok
start/page/5/index The same chain incrementing rather than setting, with no option ok
start/page/6/index Incrementing with sandbox ok
start/page/7/index Incrementing with reset ok
start/page/8/index Incrementing with clean ok
start/page/index The eight {page} chains side by side, which is what makes their differences readable ok
tags/code ok
tags/curl_post_target ok
tags/curl_posts_its_post_option ok
tags/markdown ok
tags/script The script: prefix running a shell, python, perl and php script from _scripts/ ok
tags/tilde ok
vars/at/1 The @ reference over a flat global and a nested one, by name and by wildcard ok
vars/at/2 The same references where the value is buried five levels deep ok
vars/at/7 The @ reference walking an XML file, with optional hiding what is not there ok
vars/at/8 A dotted path with a condition at each step, into a data file ok
vars/at/9 The @ reference as a tag pair and through the {at} tag, over the same data ok
vars/at/random The wildcard forms of a dotted reference, each drawn fresh, asserted by shape ok