CINXE.COM

testing-framework · GitHub Topics · GitHub

<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-74231a1f3bbb.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-8a995f0bacd4.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-f37fb7684b1f.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-9ac301c3ebe5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-cd826e8636dc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f91b0f603451.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-83beb16e0ecf.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6e122dab64fc.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-18119e682df0.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-225433424a87.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-cba26849680f.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-03f97e65e478.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-ea73c9cb5377.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-3e72ff5534e0.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/explore-742a7653565b.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dashboard-0de2bd46c6d8.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/discussions-dae9ae1a46a6.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["copilot_immersive_issue_preview","copilot_new_references_ui","copilot_chat_repo_custom_instructions_preview","copilot_no_floating_button","copilot_topics_as_references","copilot_read_shared_conversation","copilot_duplicate_thread","copilot_buffered_streaming","dotcom_chat_client_side_skills","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","github_models_gateway_parse_params","github_models_o3_mini_streaming","insert_before_patch","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","issues_advanced_search_nested_ownership_filters","issues_dashboard_no_redirects","marketing_pages_search_explore_provider","primer_react_css_modules_ga","react_data_router_pull_requests","react_override_default_key","remove_child_patch","sample_network_conn_type","swp_enterprise_contact_form","site_proxima_australia_update","viewscreen_sandbox","issues_react_create_milestone","issues_react_cache_fix_workaround","lifecycle_label_name_updates","copilot_task_oriented_assistive_prompts","issue_types_prevent_private_type_creation","refresh_image_video_src","react_router_dispose_on_disconnect","codespaces_prebuild_region_target_update","turbo_app_id_restore","copilot_code_review_sign_up_closed"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-543be634fc76.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-9da652f58479.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-3abb8f-46b9f4874d95.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-952d624642a1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-f04cb2a9fc8c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-0dbb79f97f8f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-62d275b7ddd9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-78748950cb0c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-8e9f78-a90ac05d2469.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-a1760ffda83d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-ceef33f593fa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-c44a69-efa32db3a345.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-394f8eb34f19.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-0fd720babc23.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-2906d7-2a07a295af40.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-be8cb88f481b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-a4a1922eb55f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-a03ee12d659a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-b6294cf703b7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-e3180fe3bcb3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-947061-e7a6c4a19f98.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-62f3e9c52ece.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-768abe60b1f8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-3e000c5d31a9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-87a4ae-eda74b9de9cd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-e429cff6ceb1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-c92ce7c6a557.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-01e85cd1be94.js"></script> <title>testing-framework · GitHub Topics · GitHub</title> <meta name="route-pattern" content="/topics/:topic_name(.:format)" data-turbo-transient> <meta name="route-controller" content="topics" data-turbo-transient> <meta name="route-action" content="show" data-turbo-transient> <meta name="current-catalog-service-hash" content="82c569b93da5c18ed649ebd4c2c79437db4611a6a1373e805a3cb001c64130b7"> <meta name="request-id" content="D77E:7F725:1095E23:1264086:67EE6C87" data-pjax-transient="true"/><meta name="html-safe-nonce" content="74eb971d2545cc9ef1a4fe9dbe981485bcf19366cb676f5b598796b4062563cb" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENzdFOjdGNzI1OjEwOTVFMjM6MTI2NDA4Njo2N0VFNkM4NyIsInZpc2l0b3JfaWQiOiI0NDg3MTY1NTc2NzA2MTU3NzAzIiwicmVnaW9uX2VkZ2UiOiJzb3V0aGVhc3Rhc2lhIiwicmVnaW9uX3JlbmRlciI6InNvdXRoZWFzdGFzaWEifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="f1f0ef970d9128746f69a0aeda3dbd5e82a88f71677d4fea142538c4b477c28a" data-pjax-transient="true"/> <meta name="github-keyboard-shortcuts" content="copilot" data-turbo-transient="true" /> <meta name="selected-link" value="/topics/testing-framework" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/topics/testing-framework" /> <meta property="og:url" content="https://github.com"> <meta property="og:site_name" content="GitHub"> <meta property="og:title" content="Build software better, together"> <meta property="og:description" content="GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <meta property="og:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1200"> <meta property="og:image" content="https://github.githubassets.com/assets/github-mark-57519b92ca4e.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="og:image" content="https://github.githubassets.com/assets/github-octocat-13c86b8b336d.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="twitter:site" content="github"> <meta property="twitter:site:id" content="13334762"> <meta property="twitter:creator" content="github"> <meta property="twitter:creator:id" content="13334762"> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:title" content="GitHub"> <meta property="twitter:description" content="GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects."> <meta property="twitter:image" content="https://github.githubassets.com/assets/github-logo-55c5b9a1fe52.png"> <meta property="twitter:image:width" content="1200"> <meta property="twitter:image:height" content="1200"> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="8a49e4f471e93cfe606b48138a8ec186922738ef194c429727baf97aea275b9b" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="fd0fc9381f4ed5c5ca218fda13c48a4f5d10dab98b1b7af72fe31052c3b80466" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="3880f621a6450d86227686dafe66b79bb840ae1d588507e3f013719db633d34a" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="051ae344a5d26fb11c7ad35555dcbe83f50da7a2e961e50a5112802b8da4deae" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <meta name="release" content="3eb8593da689c15e99337a1a551c87d580089074"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-99bc880bd101.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-56004cde4e29.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-f1bca44e0926.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-cf2f2ab8dab4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-434cb6-95f395b76298.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-9a233856b02c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-55fea94174bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-ad009fc6c345.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-1edadb4bd04c.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.7110f8bed75b67122d7a.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-4898d1bf4b51.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-45d6658f8b6b.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Logomark;ref_loc:Header&quot;}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Ftopics%2Ftesting-framework" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="672c3130b778d30ee559f2f6f4146adb6f0e4183efb96f07598b990187a3f75b" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to Sign in&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_copilot&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_copilot_link_product_navbar&quot;}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_advanced_security_link_product_navbar&quot;}" href="https://github.com/security/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Advanced Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;actions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;actions_link_product_navbar&quot;}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;codespaces&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;codespaces_link_product_navbar&quot;}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;issues&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;issues_link_product_navbar&quot;}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_review&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_review_link_product_navbar&quot;}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;discussions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;discussions_link_product_navbar&quot;}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_search&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_search_link_product_navbar&quot;}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;all_features&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;all_features_link_product_navbar&quot;}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;documentation&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;documentation_link_product_navbar&quot;}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_skills&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_skills_link_product_navbar&quot;}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;blog&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;blog_link_product_navbar&quot;}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprises&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;startups&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}" href="https://github.com/enterprise/startups"> Startups </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;nonprofits&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}" href="/solutions/industry/nonprofits"> Nonprofits </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devsecops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ci_cd&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ci_cd_link_solutions_navbar&quot;}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;healthcare&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;financial_services&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;manufacturing&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;government&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_industries&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ai&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;software_development&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_link_resources_navbar&quot;}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;learning_pathways&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;learning_pathways_link_resources_navbar&quot;}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;events_amp_webinars&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;events_amp_webinars_link_resources_navbar&quot;}" href="https://resources.github.com"> Events &amp; Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ebooks_amp_whitepapers&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ebooks_amp_whitepapers_link_resources_navbar&quot;}" href="https://github.com/resources/whitepapers"> Ebooks &amp; Whitepapers </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;customer_stories&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;partners&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;executive_insights&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;executive_insights_link_resources_navbar&quot;}" href="https://github.com/solutions/executive-insights"> Executive Insights </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_sponsors&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;the_readme_project&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;the_readme_project_link_open_source_navbar&quot;}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;topics&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;trending&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;collections&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}" href="https://github.com/security/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}" href="/features/copilot/copilot-business"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">Copilot for business</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;premium_support&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;pricing&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;pricing_link_global_navbar&quot;}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="8IK_1CkMviNfiNnGEmALAGNMM3vDLRu6wTOcX_VTF-6YzP5SJ0EUWGFZeN_NYwxcSBog04eduQ8VzMKJp6_rVw" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;searchbar&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-28093baf-b6a3-4f98-8eb8-013fd8b7db59" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-28093baf-b6a3-4f98-8eb8-013fd8b7db59" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2">Search syntax tips</a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="7bpy1q4+wXSMavGFcubxN2/i07LPqOmJYU3IAcXVglVuGUZyTlpuE8TJwkQocpHYszxXdmqbK8mk5GQgFhY4xw==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="Exy8cIP2T/u4NrgK3bbQKil0H/J4IY1dfu0+fQblUR1G87I5f4q5GNEJlbRnCz7uRHmi2hn4KOCidAwwf9wX4A==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required only-validate-on-blur="false"> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="Pt6D1xECZpl7RDk9CryAXRhNJ5npl9E/gYj1nVmsMUeNs+C00OBVG19YilicDDDXpscWQhhgxq2IoEKltV2q9A==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Ftopics%2Ftesting-framework" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="672c3130b778d30ee559f2f6f4146adb6f0e4183efb96f07598b990187a3f75b" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2Ftopics%2Ftesting-framework&amp;source=header" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="672c3130b778d30ee559f2f6f4146adb6f0e4183efb96f07598b990187a3f75b" data-analytics-event="{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/topics/testing-framework;ref_cta:Sign up;ref_loc:header logged out&quot;}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-264b479f-8cd5-44e1-afc2-20acdd33b19c" aria-labelledby="tooltip-f7e06569-e8c0-42d8-9d4e-344e8baecc75" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-f7e06569-e8c0-42d8-9d4e-344e8baecc75" for="icon-button-264b479f-8cd5-44e1-afc2-20acdd33b19c" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled data-project-hovercards-enabled > <main> <div class="site-subnav color-bg-default site-subnav-sticky js-sticky" > <nav class="container-lg mx-auto p-responsive" role="navigation" aria-label="Explore navigation"> <div class="d-flex flex-wrap flex-items-center flex-justify-center flex-md-justify-start text-center text-md-left"> <a class="js-selected-navigation-item d-inline-block subnav-primary f5 py-0 py-md-3 mt-2 mt-md-0 mr-0 mr-md-4 no-underline subnav-link" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;NAVIGATION_BAR&quot;,&quot;click_target&quot;:&quot;EXPLORE&quot;,&quot;click_visual_representation&quot;:&quot;CLICK_VISUAL_REPRESENTATION_UNKNOWN&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="810a22529b573421309af4f9bf564615d9a5d626cb3c3b28fc794dda07d22310" data-selected-links="/explore /explore/email /explore" href="/explore">Explore</a> <a class="js-selected-navigation-item selected d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;NAVIGATION_BAR&quot;,&quot;click_target&quot;:&quot;TOPICS&quot;,&quot;click_visual_representation&quot;:&quot;CLICK_VISUAL_REPRESENTATION_UNKNOWN&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8774c0c176d720ac1b18da28b853dcc4f4bfcf88f9d464f914a4d132d34b99ec" aria-current="page" data-selected-links="topics_path /topics/testing-framework /topics" href="/topics">Topics</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;NAVIGATION_BAR&quot;,&quot;click_target&quot;:&quot;TRENDING&quot;,&quot;click_visual_representation&quot;:&quot;CLICK_VISUAL_REPRESENTATION_UNKNOWN&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="77230dfcd37117ff8e9468d972bf94f92f1b01ad2f2b6b6b5aefb5203c21f5ec" data-selected-links="/trending /trending/developers /trending/developers /trending /trending" href="/trending">Trending</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;NAVIGATION_BAR&quot;,&quot;click_target&quot;:&quot;COLLECTIONS&quot;,&quot;click_visual_representation&quot;:&quot;CLICK_VISUAL_REPRESENTATION_UNKNOWN&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6060b156c63fc6bbabfd751274c378561c83ba468fa8a1df42ba795449d934a2" data-selected-links="collections_path /collections/ /collections" href="/collections">Collections</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;NAVIGATION_BAR&quot;,&quot;click_target&quot;:&quot;EVENTS&quot;,&quot;click_visual_representation&quot;:&quot;CLICK_VISUAL_REPRESENTATION_UNKNOWN&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5c9f99b10d11c69ec7b6ada9034aa2e5176e83404ed155990a3cd8c1a79675ba" data-selected-links="events_path /events?id= /events" href="/events">Events</a> <a class="js-selected-navigation-item d-inline-block py-2 py-md-3 mr-3 mr-md-4 no-underline subnav-link" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;NAVIGATION_BAR&quot;,&quot;click_target&quot;:&quot;GITHUB_SPONSORS&quot;,&quot;click_visual_representation&quot;:&quot;CLICK_VISUAL_REPRESENTATION_UNKNOWN&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:null,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="73ffc936483017e697d7eff0d1951afc48c8f203201e065e22dbf8c879072087" data-selected-links="sponsors_explore_index_path /sponsors/explore /sponsors/explore" href="/sponsors/explore">GitHub Sponsors</a> </div> </nav> </div> <div> <div class="container-lg p-responsive py-5"> <div class="gutter-md"> <div class="col-lg-9 col-md-8 d-flex flex-items-center mb-3 mb-sm-0"> <div class="d-flex flex-1"> <div class="border color-border-subtle color-bg-accent f4 color-fg-muted text-bold rounded flex-shrink-0 text-center mr-3" style="width: 48px; height: 48; line-height: 48px;" > # </div> <h1 class="h1"> testing-framework </h1> </div> <topic-feeds-toast-trigger data-topic-display-name="testing-framework" data-topic-name="testing-framework"> <!--Add Discover button--> <!--End Add Discover button--> <div data-view-component="true" class="d-inline-block"> <a href="/login?return_to=%2Ftopic.testing-framework" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="15cce1767abb0fe7cd21e63b97178f711db56e9c34c22dcad7f4652733445c3a" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> </a></div> </topic-feeds-toast-trigger> </div> </div> </div> <div class="topic p-responsive container-lg"> <div class="d-md-flex gutter-md"> <div class="col-md-8 col-lg-9" data-hpc> <div class="border rounded color-shadow-small color-bg-default p-4 mb-5"> <div class="markdown-body f5 mb-2"> <p>Software <strong>testing</strong> is the act of examining the artifacts and the behavior of the software under test by validation and verification to make sure it works. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Testing can be iterative, and happen multiple times.</p> </div> </div> <h2 class="h3 color-fg-muted"> Here are 927 public repositories matching this topic... </h2> <div class="d-sm-flex"> <details class="details-reset details-overlay mt-2 mr-3 select-menu"> <summary data-view-component="true" class="select-menu-button btn-sm btn"> <i>Language:</i> <span data-menu-button>All</span> </summary> <details-menu class="select-menu-modal position-absolute" style="z-index: 99;"> <div class="select-menu-header"> <span class="select-menu-title">Filter by language</span> </div> <div class="select-menu-list"> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework" aria-checked="true"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> All <span>927</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=java" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Java <span>160</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=javascript" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> JavaScript <span>144</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=python" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Python <span>120</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=typescript" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> TypeScript <span>74</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=c%23" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> C# <span>56</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=html" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> HTML <span>49</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=c" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> C <span>33</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=c%2B%2B" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> C++ <span>32</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=go" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Go <span>27</span> </span> </a> <a class="select-menu-item" role="menuitemradio" href="https://github.com/topics/testing-framework?l=kotlin" aria-checked="false"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text d-flex flex-justify-between" data-menu-button-text> Kotlin <span>19</span> </span> </a> </div> </details-menu> </details> <details class="details-reset details-overlay select-menu mt-2"> <summary data-view-component="true" class="select-menu-button btn-sm btn"> <i>Sort:</i> <span data-menu-button >Most stars</span> </summary> <details-menu class="select-menu-modal position-absolute" style="z-index: 99;"> <div class="select-menu-header"> <span class="select-menu-title">Sort options</span> </div> <div class="select-menu-list"> <a class="select-menu-item" role="menuitemradio" aria-checked="true" href="/topics/testing-framework?o=desc&amp;s=stars"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Most stars </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/testing-framework?o=asc&amp;s=stars"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Fewest stars </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/testing-framework?o=desc&amp;s=forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Most forks </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/testing-framework?o=asc&amp;s=forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Fewest forks </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/testing-framework?o=desc&amp;s=updated"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Recently updated </span> </a> <a class="select-menu-item" role="menuitemradio" aria-checked="false" href="/topics/testing-framework?o=asc&amp;s=updated"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check select-menu-item-icon"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> <span class="select-menu-item-text" data-menu-button-text > Least recently updated </span> </a> </div> </details-menu> </details> </div> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_IMAGE&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:31629751,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8f8ae47f58a083a3556e8e90bceeb4c05e5dca69842407bc4dab9e241a55e2d0" data-turbo="false" style="max-height:275px" href="/cypress-io/cypress" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"><img loading="lazy" src="https://repository-images.githubusercontent.com/31629751/ecd5d200-af93-11e9-93e3-145304e72266" alt="cypress" class="d-block width-full" ></a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:8908513,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d95a32723afd3df8156b35adb83b12e65f5c9e75817f4bebdb014d967af0a24d" data-turbo="false" href="/cypress-io" data-view-component="true" class="Link">cypress-io</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:31629751,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2e9881d862c094093f6759c1d327b5765c9f876133ac414ddc7ee9be14e05934" data-turbo="false" href="/cypress-io/cypress" data-view-component="true" class="Link text-bold wb-break-word">cypress</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fcypress-io%2Fcypress" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:31629751,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9f5cfc4bffba390895647f1ae1292c3468d88d61a5f3d2a414e098f642ee1033" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="48464 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="48,464" data-view-component="true" class="Counter js-social-count">48.5k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-31629751" aria-current="true" href="/cypress-io/cypress" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:31629751,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a528a82c92b3aea278bb5f6ef5988931c1a167c80b182cc99c2096c0e5c6a91c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-31629751" href="/cypress-io/cypress/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:31629751,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="10398659c4d1d2b71a41c8267c15e67030bcf9dd9df3885715c023574c293cf0" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-31629751" href="/cypress-io/cypress/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:31629751,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cf93787bf207d8196e90449245831c8d0235633ddde2f27fe3a2157a5ae28071" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-31629751" href="/cypress-io/cypress/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:31629751,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3743b05f8aa8745801e575fc17af9c366210dcd9d37388630541952b34611cbf" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Fast, easy and reliable testing for anything that runs in a browser.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:75363,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="19336a259ca54b98b90c5027b2c3745f75356064299d4c80593d5ef59602e04a" title="Topic: end-to-end-testing" href="/topics/end-to-end-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">end-to-end-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:237578,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8a6db68447a53a147523bd2530e293f917e022e952e92eb7bd1b1c9f9fdd31d6" title="Topic: cypress" href="/topics/cypress" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cypress</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:471556,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f60ea01a35aff5e01b162ca2c57db9f823e067e16e55ade7796ba5c7ebd34125" title="Topic: component-testing" href="/topics/component-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">component-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:582452,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7656cb1b9a89d9fb99764a8265d49ab5ab90cafcba22ecc03713f4b956e4f4de" title="Topic: testing-library" href="/topics/testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:600393,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="aff93d73be867c23e02fb3640b74064ab568df94a574944e538a5f6457d58f37" title="Topic: testing-tool" href="/topics/testing-tool" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-tool</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:745489,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="00638e1383b3815e19daed3ad37c4280527e0998af484b325c0991d839db2a83" title="Topic: react-testing-library" href="/topics/react-testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">react-testing-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1063146,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3c2856a6584ad43af5a7e68cf1b0a1b9886e08d048b9273313af7ca0fd3a4651" title="Topic: vue-testing-library" href="/topics/vue-testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">vue-testing-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1109720,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="4ef24936ff1ba6c5de421cf824fae7e1121a750e1eab9798b5bf625b7301c64c" title="Topic: angular-testing-library" href="/topics/angular-testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">angular-testing-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1130853,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="902daa993cfa4b2fc87c8491cc782ddc73c071b99a92c070f482e0c7801f9437" title="Topic: svelte-testing-library" href="/topics/svelte-testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">svelte-testing-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1164349,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ea003e989f018c5bb82f3a79fdb6e2928936a75766bcb4b53d179a58805ce2ef" title="Topic: cypress-schematic" href="/topics/cypress-schematic" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cypress-schematic</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1890732,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="22c05524d72fe62dfdc9b41a8e1d78100f62e7a52897c66efb7d5cfa77519a48" title="Topic: cypress-cloud" href="/topics/cypress-cloud" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cypress-cloud</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2971854,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5c5d8019b1ad693fa9c8edae3182ce0292cfcfe817238aae633e46995098fb86" title="Topic: test-replay" href="/topics/test-replay" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test-replay</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-04-03T00:46:06Z" class="no-wrap">Apr 3, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3178c6"></span> <span itemprop="programmingLanguage">TypeScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_IMAGE&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:81226206,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9791313ad642bf882e5fa5fb47f2f6d1c8bcfdf9afedc1ab7ccf0124b9e2f60d" data-turbo="false" style="max-height:275px" href="/karatelabs/karate" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"><img loading="lazy" src="https://repository-images.githubusercontent.com/81226206/2392b041-2ddb-438c-91ae-4022cf7f4549" alt="karate" class="d-block width-full" ></a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:91312095,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="715e5b27d096296d91a940f7db2f174dc56becd8d41c2fecf044b11b2f4d4306" data-turbo="false" href="/karatelabs" data-view-component="true" class="Link">karatelabs</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:81226206,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d3735e8dc565dc6f440828d6da403d9d01af49e8c19c2a9d9231536e6c4c289d" data-turbo="false" href="/karatelabs/karate" data-view-component="true" class="Link text-bold wb-break-word">karate</a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/karatelabs" aria-label="Sponsor @karatelabs" data-hydro-click="{&quot;event_type&quot;:&quot;sponsors.button_click&quot;,&quot;payload&quot;:{&quot;button&quot;:&quot;TOPIC_PAGE_SPONSOR&quot;,&quot;sponsorable_login&quot;:&quot;karatelabs&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6f0af68a982dc64603e11048a0ed386c969ec024aa79cb2614ab00299a624bec" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fkaratelabs%2Fkarate" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:81226206,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6e7f1d44c67021a1dd6afd54057d37e9823560e442e9a56d46d985156a2abeba" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="8504 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="8,504" data-view-component="true" class="Counter js-social-count">8.5k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-81226206" aria-current="true" href="/karatelabs/karate" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:81226206,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c04b21fad975aefbcf56814e9adb223039e2f614fdfc9f6494e5686d86d9606d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-81226206" href="/karatelabs/karate/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:81226206,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="33eb984973e52125d8e73c7b6ab9e800c1561f2292d0106be92350f2d47722d3" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-81226206" href="/karatelabs/karate/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:81226206,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e47ba905fa2d62e69d9c4ca0f9130576116d0b8f3dd06faf3899f07eed554866" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Test Automation Made Simple</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2308,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="394f81d10b228d3c0a99e01f7ff965a928e62a097b5d82bf01d2f9de9bd6a376" title="Topic: automation" href="/topics/automation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">automation</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:7520,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d61ea34b47c05b6c770482d17d8a90a4712cc77a842d0139415d70696d772ef6" title="Topic: microservices" href="/topics/microservices" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">microservices</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:7578,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f1dc90499c1831b1562d6c7fe9d270d64fb4f1fadecd395b1daf1abfbc2bdfab" title="Topic: webdriver" href="/topics/webdriver" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">webdriver</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13337,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="22074bc5b0a954dd59b4e89edee1b6bb3759a6501cd56b07fa343f8d1a3cfb71" title="Topic: bdd" href="/topics/bdd" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">bdd</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13673,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b0635f3cdac8ec3e8a466d72280970067e6c36d0e0668c151628a6249a6718b4" title="Topic: mock-server" href="/topics/mock-server" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">mock-server</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:20597,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9db7e74ad188fdd20758964986b30de226fe825578c302763d6d6792bdd33fe5" title="Topic: load-testing" href="/topics/load-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">load-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:21923,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="92a1133b610f317edf960f932fe4107821f7dcc3baed2ace03edaa30f2141e54" title="Topic: assertions" href="/topics/assertions" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">assertions</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22617,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5cb7c0938ce5afdd7e34e899662fb65c00c05691adf5709386a2bf3c9757e0bf" title="Topic: test-automation" href="/topics/test-automation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test-automation</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:24011,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9c510b24299bf65d931f1ae169eba24ef285b9383fcf69f9882c61eb7cfb5f24" title="Topic: cucumber" href="/topics/cucumber" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cucumber</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:45326,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f4a30780565016bd34447f28040ecdd14750631a0a7972d52f5a12ca26fcfe09" title="Topic: developer-tools" href="/topics/developer-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">developer-tools</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65334,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fb41329f9bf40b1d569041428a18b51e192a2352d593ec934bc7da5fa1b924e1" title="Topic: testing-tools" href="/topics/testing-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-tools</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:150595,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7ac6153ddbe55cc456672f8dd087068820604f699f4e0c3995b5611fbc105c8c" title="Topic: api-testing" href="/topics/api-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">api-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:189556,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="11b719d7061e73772c381a82cea3aac229ca6e7a9edeb5108db0408bb28213a1" title="Topic: contract-testing" href="/topics/contract-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">contract-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:281386,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f6f93e5f40faf7843882452f9dbb536a70d84944ec3795f422e8f7fc0e79e1f3" title="Topic: automated-testing" href="/topics/automated-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">automated-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-03-17T16:11:33Z" class="no-wrap">Mar 17, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #b07219"></span> <span itemprop="programmingLanguage">Java</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:70880936,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="59a4a60640b31abd0db79a437c1774abd35ff3fca5285e50bc035b5e6da93c89" data-turbo="false" href="/doctest" data-view-component="true" class="Link">doctest</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22660515,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="84f27faad6cb9a8b8c355c5303a5eefb31985831b3d8acc16921f2defb562f2e" data-turbo="false" href="/doctest/doctest" data-view-component="true" class="Link text-bold wb-break-word">doctest</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fdoctest%2Fdoctest" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:22660515,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3016c34ddc5b2a6ad53a7333e6b1b173fb2d82a0e105273a63746ddabbf1c3c8" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="6153 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="6,153" data-view-component="true" class="Counter js-social-count">6.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-22660515" aria-current="true" href="/doctest/doctest" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22660515,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f146021e55965c619b7bc9dfbee958d1d7cff563f562b677c71d64ba9abe96bd" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-22660515" href="/doctest/doctest/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22660515,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3cd3fd36f604ff8058d39972539a2537d6d12ac3cf5b7bbf61d25e8a7ad19233" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-22660515" href="/doctest/doctest/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22660515,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ccb76a5ea31afd4db89bf25179e16c7c79c336e90c454391f6fc7d0d300003ff" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-22660515" href="/doctest/doctest/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22660515,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eaa655fd035b8f691a355c9d913a59536ab5614ecb159f065080699a2a22e2f6" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >The fastest feature-rich C++11/14/17/20/23 single-header testing framework</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:658,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bce3b156e847962e50e88c7f34506b906ea0fc68a99599af4f9eb25ba182de62" title="Topic: c-plus-plus" href="/topics/c-plus-plus" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">c-plus-plus</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:839,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08587df52c94635e76bd124d7761b747bd4b07cf3342f2765ad67ad76bc2ff39" title="Topic: unit-testing" href="/topics/unit-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unit-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:9713,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="05e2834820ec25cb908a9854eb7f45fce8ff85c2cb39f2f402e8a5613e1f510d" title="Topic: tdd" href="/topics/tdd" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">tdd</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:9802,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5041e0164337ca283c23e5fb3fea3903a6be3b3da0cca68db3f5a4abdb35dc19" title="Topic: cpp" href="/topics/cpp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cpp</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12597,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="40e063119557005359129bfbbe081479d5a772a5871a32fc345b00e0f9886995" title="Topic: doctest" href="/topics/doctest" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">doctest</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:17021,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="aeaec3eb43c89cb6c1df84746853188ab7e94b6957ac6785e75469c21ec0d56a" title="Topic: cpp14" href="/topics/cpp14" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cpp14</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:23967,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6256927a7e9e9cff4d27b84c4679c6e449a478ce69ee5cacfa75028e11f862c2" title="Topic: cpp11" href="/topics/cpp11" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cpp11</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:44977,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="acbecbfa11139af4b5ec73aa5316a279a062d5d12b4539ab8ccc79605fcb3323" title="Topic: header-only" href="/topics/header-only" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">header-only</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:73840,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="61ab18cd7df38512985e194cfc8d333f27bebbe966352180f19eaab8eb9c8f6b" title="Topic: cpp17" href="/topics/cpp17" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cpp17</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:316864,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a3f0c962ed30a3b48eda98668e34917f1d1890b7211b2d933225caf7f379401c" title="Topic: single-file" href="/topics/single-file" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">single-file</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:510416,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="64056701c4973cfbd406ec3f9eecb63c89b926b38c07c8bb18b7ba7a08300f45" title="Topic: cpp20" href="/topics/cpp20" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cpp20</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1005797,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="4bd6bce3b190273be88d484377c723f5003e83680d35ef4ea05a3ccc27ea34ec" title="Topic: cpp23" href="/topics/cpp23" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cpp23</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-12-01T15:48:55Z" class="no-wrap">Dec 1, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f34b7d"></span> <span itemprop="programmingLanguage">C++</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1178890,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c8eaaca6d4c4b987757d4c6015db564ab86d2bd8d2274f4a737afe68b27329c7" data-turbo="false" href="/antiwork" data-view-component="true" class="Link">antiwork</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:859537060,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08e1f539e363562699b741eedfbe314ca8923adff5d235610c47da825bfb4456" data-turbo="false" href="/antiwork/shortest" data-view-component="true" class="Link text-bold wb-break-word">shortest</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fantiwork%2Fshortest" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:859537060,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c42df61ad147f7a090a0092e8b50b3e53f8b4e50b88126b77b7a8e6474dbbc27" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="4687 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="4,687" data-view-component="true" class="Counter js-social-count">4.7k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-859537060" aria-current="true" href="/antiwork/shortest" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:859537060,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="563377432972e14004e191fba50326dd21aa6301211126cf361e6a8e4a2d6018" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-859537060" href="/antiwork/shortest/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:859537060,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6c7c9a252b6d65c63c27a49dce46cc112c3b64fd9f3e8ba4710063bbb513ed9b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-859537060" href="/antiwork/shortest/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:859537060,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="11bd93da68af62a99395876280133144c3b78be4ce8f5a1489831c0f14abbfbe" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-859537060" href="/antiwork/shortest/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:859537060,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c709ffde3e8a3c7392375b45310868b7da418ae3703a39c49a00748616756734" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >QA via natural language AI tests</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:40,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7282f0ff8f90ef27d80d1116416906453d82018976245f7937c81592c1ef442e" title="Topic: javascript" href="/topics/javascript" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">javascript</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2308,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="394f81d10b228d3c0a99e01f7ff965a928e62a097b5d82bf01d2f9de9bd6a376" title="Topic: automation" href="/topics/automation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">automation</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13199,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12171359c6c52fed79815560cc55e56c8e2418b9a0ef73f539795e4f5f3d1b4f" title="Topic: nextjs" href="/topics/nextjs" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">nextjs</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22431,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cc9b53130f77746b88a2ad9dbb9ed35362f883472a525a26413974c5f3371593" title="Topic: chromium" href="/topics/chromium" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">chromium</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22617,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5cb7c0938ce5afdd7e34e899662fb65c00c05691adf5709386a2bf3c9757e0bf" title="Topic: test-automation" href="/topics/test-automation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test-automation</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:23427,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="483403553d7a79dbc275206dff9641dd6d8377259d71252e4afd817dfb6f5e2e" title="Topic: e2e-tests" href="/topics/e2e-tests" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">e2e-tests</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:75363,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="19336a259ca54b98b90c5027b2c3745f75356064299d4c80593d5ef59602e04a" title="Topic: end-to-end-testing" href="/topics/end-to-end-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">end-to-end-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:516522,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c554c1566149fbc302c4dafc41361444871427d86070cf2874cb551014fb6559" title="Topic: e2e-testing" href="/topics/e2e-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">e2e-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:600393,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="aff93d73be867c23e02fb3640b74064ab568df94a574944e538a5f6457d58f37" title="Topic: testing-tool" href="/topics/testing-tool" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-tool</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1173308,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a8dd45bfa646ae2c17206bee53d32d0258e66ccf9afe97a47d1f3e3405e35e63" title="Topic: playwright" href="/topics/playwright" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">playwright</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1922962,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d3fb64ad005ace23c7902952979187b419d6f01cc0bdefa1a95ba22df742ac2a" title="Topic: anthropic" href="/topics/anthropic" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">anthropic</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-04-02T12:52:47Z" class="no-wrap">Apr 2, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3178c6"></span> <span itemprop="programmingLanguage">TypeScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:765943,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0e5202436fa534457143788d888e31002fca2d34d2a0780a622dbb7164f32bff" data-turbo="false" href="/apiaryio" data-view-component="true" class="Link">apiaryio</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12590052,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a3e5e2f9f1fdb1dfa1fe36a92b7536baf82f3b28719ee61a898d97f941218466" data-turbo="false" href="/apiaryio/dredd" data-view-component="true" class="Link text-bold wb-break-word">dredd</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fapiaryio%2Fdredd" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:12590052,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="44af7742ed6e50f45234285351ab4234011983d40789018311d53e98a187088b" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="4208 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="4,208" data-view-component="true" class="Counter js-social-count">4.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-12590052" aria-current="true" href="/apiaryio/dredd" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12590052,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b5cc027b315834090191a13736910a151adbba8a808f962f817723f2bb040c1c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-12590052" href="/apiaryio/dredd/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12590052,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="14a9211376db9a6a9b32ee411b24a3f44bb6211a3d07cba676231e32bcda30b8" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-12590052" href="/apiaryio/dredd/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12590052,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f9af890e8ac0902e4ff35aaad16a52b88399177a0890a516b1e89f471fed5cc6" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Language-agnostic HTTP API Testing Tool</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:242,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="659cb0be38b946184653a5e7e85e36196e49a458ea0b225c81df065604cdc1b2" title="Topic: api" href="/topics/api" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">api</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:473,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="81e51f9af72747ff292df9ee6e4a1fab3f38988ce4a74b86e50340a4502f0b19" title="Topic: http" href="/topics/http" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">http</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:839,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08587df52c94635e76bd124d7761b747bd4b07cf3342f2765ad67ad76bc2ff39" title="Topic: unit-testing" href="/topics/unit-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unit-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:8928,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b659dca69f4642441bb043d2c43554c174abbbaf217a348dbc642bb47df045f3" title="Topic: validation" href="/topics/validation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">validation</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13546,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9de58ece0fc94df904479317ff4bb46dc0364bff61d226c91f67ab962fb4e43b" title="Topic: integration-testing" href="/topics/integration-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">integration-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:17398,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2728d98a30342c3d04bb0088311ab9c512b466b9d4ef25c78aca48f956e97190" title="Topic: swagger" href="/topics/swagger" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">swagger</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:17451,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c9863502ab102ea3e60c3e2b36e7e53efc7e2803e15664de3bc73b40e733b3a0" title="Topic: test-runner" href="/topics/test-runner" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test-runner</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:21376,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2ee3acda00151aa838aa89ff6282ac0a3a31cb15894d7cc2974509467668dadd" title="Topic: openapi" href="/topics/openapi" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">openapi</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:23142,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3a27065d8e1258eef35a2c978d5abadbdae41037856d4efabe30bc692fbad063" title="Topic: tests" href="/topics/tests" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">tests</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:27993,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e292d4a9a63302b70fd0c43e0e91f1052a3ec75ad34d1f89e3763e6608498dc8" title="Topic: test-framework" href="/topics/test-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:59980,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7e3f7eb459b6e9f87b82370ca1bb62e1eabd24e35199c3e3dcf3afc9e7e3ea5a" title="Topic: api-blueprint" href="/topics/api-blueprint" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">api-blueprint</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:73656,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8a2214981076bce0ea3ab3bf182806d3ef67d67dec28f73148fb29fa83e533e1" title="Topic: cli-app" href="/topics/cli-app" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cli-app</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:109050,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e7241335d7199de69a0cb344c0cf7c1ef22de54453e93bbfe223c19ed940cdc1" title="Topic: dredd" href="/topics/dredd" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">dredd</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:287824,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="04297859194cc3ed9c23816d77ac03c8d2df115c4c2f0f534cd7347a580ce009" title="Topic: openapi-validation" href="/topics/openapi-validation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">openapi-validation</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398950,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="95f3da53cc196032563b337eb8cfabf472c3e02c0c6fb76fa4bcb9165e24af14" title="Topic: openapi3" href="/topics/openapi3" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">openapi3</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:427150,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9dcb87a5d457c61991e5f204f05e4863cc2baf72b9ade481e490aeff723c114" title="Topic: sjs-team" href="/topics/sjs-team" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">sjs-team</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:611160,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08bb8898138aba430dcfe714a9ccf06a34b5bc1afd8a7d80833457a065c75fe5" title="Topic: openapi2" href="/topics/openapi2" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">openapi2</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-05-11T13:19:25Z" class="no-wrap">May 11, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f1e05a"></span> <span itemprop="programmingLanguage">JavaScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_IMAGE&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:46383942,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="53e28ae6bc552b8be22c59677ff047954c04d642d2f9149027aed6ce6c874fb3" data-turbo="false" style="max-height:275px" href="/ansible/molecule" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"><img loading="lazy" src="https://repository-images.githubusercontent.com/46383942/687a7000-5c7e-11e9-8235-51e9db9bfd68" alt="molecule" class="d-block width-full" ></a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1507452,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1a28e9c2d739c6643f5c3e5d3cd76b91ceb11f61e2273764cb5d3bf209af9b58" data-turbo="false" href="/ansible" data-view-component="true" class="Link">ansible</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:46383942,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b4ef44c491ef3150549f5ef6ec1c896ac5193585730d44bdb43273b3260f0ad0" data-turbo="false" href="/ansible/molecule" data-view-component="true" class="Link text-bold wb-break-word">molecule</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fansible%2Fmolecule" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:46383942,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6b63d7497dd7e036394f57b0cb5276de1d572eaaa29ce08cdeeed9d2992b4d6c" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3952 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,952" data-view-component="true" class="Counter js-social-count">4k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-46383942" aria-current="true" href="/ansible/molecule" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:46383942,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ec7c209892cbd9dd9387c62fa440e54deb8c2b29c99055d0b2520ea9dc95a602" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-46383942" href="/ansible/molecule/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:46383942,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="50201f1ed3275dd9cc3a070acbb07a98ea12219a353fa1baddb0b844bd420c0d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-46383942" href="/ansible/molecule/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:46383942,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="603537bccb65d59cc38679f42112c2bdbcc3ae5b12079d66b5296182b4d4ad5b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-46383942" href="/ansible/molecule/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:46383942,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9bbb4fa6914c3f01267e0042c146403589122e5de65ad83e48c0f23ef87b300" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Molecule aids in the development and testing of Ansible content: collections, playbooks and roles</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:84,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7cc86ac99e002e3b37977375f758aaffd4b0c5ebeb52dc0e9882ba49f4b87cd8" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:648,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d1a45710bb340a0cea89cd4adce79bc6c09d8d78f9a7bc891d1b30d33be207a3" title="Topic: ansible" href="/topics/ansible" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">ansible</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:43655,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8e9bdcc317d0e8f69d737f53977d0012cf746b73f60c8eb226c6702eab54e1f4" title="Topic: testinfra" href="/topics/testinfra" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testinfra</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:196454,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="88d1961d32d07faab30209d5dc927738ad4b1a224c87d82a3ab5163a90dfdb19" title="Topic: hacktoberfest" href="/topics/hacktoberfest" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">hacktoberfest</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:785911,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6bd15fd862bfe629382fd42d9fcf8b2b8a3a4c388aa21355ce2face09f1a2726" title="Topic: podman" href="/topics/podman" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">podman</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1067323,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="4fc0c864e810c59506319cdb21f737faeacaca6d4dde8b9c212e56d1e0fc3b11" title="Topic: molecule-driver" href="/topics/molecule-driver" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">molecule-driver</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1240325,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9d64481daae4cbbc9a436e7d206082cbdaefb3cd53b0514573493326a33d8cbf" title="Topic: cookiecutter-ansible" href="/topics/cookiecutter-ansible" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cookiecutter-ansible</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1662261,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f602f512f1c3425ebfcc3e8453755f8e39a9077049b9dba83a39cddd39d7e7ff" title="Topic: supports-dot-config" href="/topics/supports-dot-config" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">supports-dot-config</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1853843,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="132599d4ba07d63fa398a7dc2240f375072ebc20113a168bf5ea4623cc11679e" title="Topic: pep-621" href="/topics/pep-621" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">pep-621</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2562982,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a982e38ee9d5095a378190850a3ac6fbbedf23dd22029619597ce7ee5c0886b4" title="Topic: ansible-dev-tools" href="/topics/ansible-dev-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">ansible-dev-tools</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-04-02T14:28:16Z" class="no-wrap">Apr 2, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1295116,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="20638f9f45493863decb05e8a07b17211f60e8f9b9582853bcea0be338b4ce33" data-turbo="false" href="/wkeeling" data-view-component="true" class="Link">wkeeling</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:137925467,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d74417f3aae1db99690f36b9881b63325b404ca89e1bc3de7d0aeb310ead661a" data-turbo="false" href="/wkeeling/selenium-wire" data-view-component="true" class="Link text-bold wb-break-word">selenium-wire</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fwkeeling%2Fselenium-wire" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:137925467,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ebc1e4943eccec4ae42f012877534cecfa4c09a1504ef86f756faa9ce4567b60" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1950 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,950" data-view-component="true" class="Counter js-social-count">2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-137925467" aria-current="true" href="/wkeeling/selenium-wire" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:137925467,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="66167293ff7ba386054c86f8f5e6d3ec050a987672abb9d834199c18a6ebaabf" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-137925467" href="/wkeeling/selenium-wire/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:137925467,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a728910be5778646f0d07f21a0c807d871a3ec151622c463b703eb669f57d161" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-137925467" href="/wkeeling/selenium-wire/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:137925467,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="022f3cad221d391cf9211506e596bb1bd0cdbddcb744d903e6d74aec22e670ba" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Extends Selenium's Python bindings to give you the ability to inspect requests made by the browser.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:84,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7cc86ac99e002e3b37977375f758aaffd4b0c5ebeb52dc0e9882ba49f4b87cd8" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65334,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fb41329f9bf40b1d569041428a18b51e192a2352d593ec934bc7da5fa1b924e1" title="Topic: testing-tools" href="/topics/testing-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-tools</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:481172,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a457c3f46cb1b75939a905ca73470bc86075fedc0082371a7e4ab1bb8d87ad92" title="Topic: web-testing" href="/topics/web-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">web-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:582452,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7656cb1b9a89d9fb99764a8265d49ab5ab90cafcba22ecc03713f4b956e4f4de" title="Topic: testing-library" href="/topics/testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-library</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-01-03T15:34:32Z" class="no-wrap">Jan 3, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:187,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c9a2057d7f7ed6bbf5b4db177231dc78880417861f282e043e6673b11fa85b3e" data-turbo="false" href="/vlucas" data-view-component="true" class="Link">vlucas</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:3530869,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fada12b64326eab3c140ccbb73a5f85efc9c45e0e48d07c068f2ad87c83caea0" data-turbo="false" href="/vlucas/frisby" data-view-component="true" class="Link text-bold wb-break-word">frisby</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fvlucas%2Ffrisby" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:3530869,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="105563c67c799325af087dc9d4b341e03a099c96c3e4e5660ee2b46eadc41a86" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1526 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,526" data-view-component="true" class="Counter js-social-count">1.5k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-3530869" aria-current="true" href="/vlucas/frisby" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:3530869,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1220dbeb1a7e604f9f68d01b591d84d8f89c4fb72b6eeedcb01e4f58dad9782b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-3530869" href="/vlucas/frisby/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:3530869,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8054cef57ef289da7ab631a75db042e723b28d51ab7cf9ff4e0882c27cd4332e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-3530869" href="/vlucas/frisby/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:3530869,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1b9764d013e87abdc3cbbf25f92856ab38adffd99594fbd6f3c88c2f05fda31b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Frisby is a REST API testing framework built on Jest that makes testing API endpoints easy, fast, and fun.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:7599,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="4ef2e462c9dd027e9e46d2cd0baaaf10850d97f5f76f98585fd0c8d543422c79" title="Topic: jasmine" href="/topics/jasmine" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">jasmine</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:9655,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c44b223669075523c19a11906ef8f0477f06961a753681f369bac9d235ce8aa9" title="Topic: jest" href="/topics/jest" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">jest</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12943,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d42575bf98dca786633ba683cf911d467238ec5d2cad224843d8859c37e4445f" title="Topic: rest-api" href="/topics/rest-api" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">rest-api</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13546,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9de58ece0fc94df904479317ff4bb46dc0364bff61d226c91f67ab962fb4e43b" title="Topic: integration-testing" href="/topics/integration-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">integration-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:196454,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="88d1961d32d07faab30209d5dc927738ad4b1a224c87d82a3ab5163a90dfdb19" title="Topic: hacktoberfest" href="/topics/hacktoberfest" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">hacktoberfest</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2023-10-23T19:22:49Z" class="no-wrap">Oct 23, 2023</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f1e05a"></span> <span itemprop="programmingLanguage">JavaScript</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:61387890,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8e57ef6b059044ee29991ca8ffb86f1fb1726ceb35f79c9ec6fb2ef8f9f1e1ef" data-turbo="false" href="/terraform-compliance" data-view-component="true" class="Link">terraform-compliance</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:86997096,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bd157961030e645acbd127c2d9dbf4deae94ae546ec44ebfbb5fdfef41778f44" data-turbo="false" href="/terraform-compliance/cli" data-view-component="true" class="Link text-bold wb-break-word">cli</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fterraform-compliance%2Fcli" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:86997096,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="36f67a12a73665b067e572865686fb42473b1fce662ecccbafef2fd19d007dc0" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1380 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,380" data-view-component="true" class="Counter js-social-count">1.4k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-86997096" aria-current="true" href="/terraform-compliance/cli" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:86997096,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cc12d5edec98fa6c4e12b7f5b71e6613e3fa9f0db08e83c94b4dec2a6b98181a" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-86997096" href="/terraform-compliance/cli/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:86997096,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="576bf8e26e0e65979555c9ff762172b2bf89955e78a178e224dad40bea84ec0e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-86997096" href="/terraform-compliance/cli/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:86997096,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bbf1acbd8208ee6bfff3a7e4458709d60738dbce08aa37cf21f7cf5cbf553bdd" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-86997096" href="/terraform-compliance/cli/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:86997096,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="99ed85846122018def8daa24f5db044200c8771565c39cc9838b6206c45076f9" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >a lightweight, security focused, BDD test framework against terraform.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:292,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="329f873febd7332e05fffe65710e6d0f9e80d9970da6a6b890523b41f719eca3" title="Topic: infrastructure" href="/topics/infrastructure" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">infrastructure</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13144,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="66b191099f06b785b52f9bb92ea84dd05ce5c056f9ed285b49946ab9961b89a9" title="Topic: terraform" href="/topics/terraform" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">terraform</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13337,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="22074bc5b0a954dd59b4e89edee1b6bb3759a6501cd56b07fa343f8d1a3cfb71" title="Topic: bdd" href="/topics/bdd" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">bdd</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22375,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="858d22629d5de21858da3923f208841c30f6614438fa885430e095f8e9cf4819" title="Topic: bdd-style" href="/topics/bdd-style" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">bdd-style</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:72601,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="387e8da4fa5dbdbd4ac0c90bee6f9085d46cb30da621325a0c2e6bb044147bee" title="Topic: hashicorp" href="/topics/hashicorp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">hashicorp</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:83804,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e307c39cc7369cb1854e36200411051f2f2191fa1db5734b916a68fa5781ac55" title="Topic: compliance" href="/topics/compliance" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">compliance</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-03-04T11:03:38Z" class="no-wrap">Mar 4, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_IMAGE&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:164605649,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8c7f91d5e26978d41de73fd1a4021c9183829a8d11a71b33ee072bdacc5e0eea" data-turbo="false" style="max-height:275px" href="/darrenburns/ward" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"><img loading="lazy" src="https://repository-images.githubusercontent.com/164605649/c3860180-b9c4-11eb-9c2c-deefa6cef534" alt="ward" class="d-block width-full" ></a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:5740731,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="49dbf7660431fb47bdf9cb2bac08b320432cac91842d5b65fd23b30eacecf9ab" data-turbo="false" href="/darrenburns" data-view-component="true" class="Link">darrenburns</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:164605649,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7ad993bc90cb67a83d8f851e6d7251e76f54f85025cbe9ad2744e684f3d29f8d" data-turbo="false" href="/darrenburns/ward" data-view-component="true" class="Link text-bold wb-break-word">ward</a> </h3> </div> <div class="d-flex flex-items-center"> <a href="/sponsors/darrenburns" aria-label="Sponsor @darrenburns" data-hydro-click="{&quot;event_type&quot;:&quot;sponsors.button_click&quot;,&quot;payload&quot;:{&quot;button&quot;:&quot;TOPIC_PAGE_SPONSOR&quot;,&quot;sponsorable_login&quot;:&quot;darrenburns&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="db1a21e3e5cc57a15be77bbfc96d063bc56e3e6f049b57827e915280803f4f31" data-view-component="true" class="Button--secondary Button--small Button mr-2"> <span class="Button-content"> <span class="Button-label"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart icon-sponsor mr-1 v-align-middle color-fg-sponsors anim-pulse-in"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> <span class="v-align-middle" > Sponsor </span></span> </span> </a> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fdarrenburns%2Fward" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:164605649,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9a8d407fe28e43c791a15176588245e079037d6938cf2e15859311f4aef2dd03" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1212 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,212" data-view-component="true" class="Counter js-social-count">1.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-164605649" aria-current="true" href="/darrenburns/ward" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:164605649,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="35469bdffc861135a2373f7554d2ec47c898cd9a8774ac9b5ab4fd5133e7c148" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-164605649" href="/darrenburns/ward/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:164605649,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a13c41731c97bcaaf17ba2bedc84a24eae43dc20a2f1dc8de65b6b051569ec06" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-164605649" href="/darrenburns/ward/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:164605649,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="41d21cdcb6a11cb41111b2c877e4b966dc3eb5c3b2dd0d2efa451252081f3ca4" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Ward is a modern test framework for Python with a focus on productivity and readability.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:84,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7cc86ac99e002e3b37977375f758aaffd4b0c5ebeb52dc0e9882ba49f4b87cd8" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:17451,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c9863502ab102ea3e60c3e2b36e7e53efc7e2803e15664de3bc73b40e733b3a0" title="Topic: test-runner" href="/topics/test-runner" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test-runner</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:84997,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="4d681172b605ff07c390f414ac955b12e7271b23da24aaeadb1b32b91d58b81e" title="Topic: tester" href="/topics/tester" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">tester</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:93466,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7a6bf120f59ae6c162b90bbb6409bf3d23afc5516dcbd9aeff75ab4b6eca5101" title="Topic: quality-assurance" href="/topics/quality-assurance" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">quality-assurance</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:315265,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="56dfa0d16d19d0be46dd783e3cdc4c1ebee743c533336852d494a06f721b6987" title="Topic: unit-test" href="/topics/unit-test" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unit-test</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:449360,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="13b2678fff91470e6df198d3e3aa75463c9450d30990ce44c065073032fc86b8" title="Topic: ward" href="/topics/ward" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">ward</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1109737,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="59054e03eb7fc9b9ffec8a2ee5db8ac2dad16fc778426a160af6c1161fc94c6a" title="Topic: contributors-welcome" href="/topics/contributors-welcome" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">contributors-welcome</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-08-26T22:58:48Z" class="no-wrap">Aug 26, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:47359,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8aa16765c4b53f4fdbc3fbede44575d2b28a7a91aa637b23682a530ca0f13572" data-turbo="false" href="/apache" data-view-component="true" class="Link">apache</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:813783,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f1abe7dffce437261a2ad356f2de40571c1b8c4abebb23411a2563795252844e" data-turbo="false" href="/apache/groovy-geb" data-view-component="true" class="Link text-bold wb-break-word">groovy-geb</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fapache%2Fgroovy-geb" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:813783,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="920c37ddd8d4be0e5c738f514ee916ca05317b8ef3cb214d8ad51ec908fda8b3" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1156 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,156" data-view-component="true" class="Counter js-social-count">1.2k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-813783" aria-current="true" href="/apache/groovy-geb" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:813783,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2928786bc7f2a1f6115c0e292a851fc65b8e9fc76284fe1add67adcea9f0e32a" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-813783" href="/apache/groovy-geb/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:813783,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5745e7393e14c9b0e7b5bce1a3d2d1c606b2233def5333ed16e7e27bc0f9bb66" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-813783" href="/apache/groovy-geb/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:813783,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2d2df21bbaab36bb09378afc1fca9a54c379513f755784529c94f20823e67cae" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-813783" href="/apache/groovy-geb/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:813783,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f3eb1a56f6cc2dfaed8dfd305f1b5b00ad8113b2331cdf90d40a49dacc3f03be" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Apache Geb: Very Groovy Browser Automation</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:160,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="abf56f8f64faba8bed51c7f4b05b507bcf3037033b1a2220376811059d7b97dc" title="Topic: java" href="/topics/java" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">java</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:382,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="91859609af69d8d8195ef27d04c0f80051f5e72d54a5407984e21e1c6d0e04bd" title="Topic: open-source" href="/topics/open-source" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">open-source</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:515,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="01fec5ea9dfd5bdfadfe9c00c7a0f4c1ad0e2fcac779ecb8088e81b4389cf2f6" title="Topic: groovy" href="/topics/groovy" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">groovy</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:7578,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f1dc90499c1831b1562d6c7fe9d270d64fb4f1fadecd395b1daf1abfbc2bdfab" title="Topic: webdriver" href="/topics/webdriver" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">webdriver</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12595,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="74d1d023ef02aff3b5ee61470c47d8e81ac802c061c33d6f3b2c9754d14d809c" title="Topic: test" href="/topics/test" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:17115,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0a237e1870de68eb762a62519a87d15b8c14acc3a01d0ec167e2ecc2abf2ce80" title="Topic: devtools" href="/topics/devtools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">devtools</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:20528,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bd2e50fcfbf7fd99438eaa1e741b869d249bcc392479da96aa1a7d76cd85980f" title="Topic: selenium" href="/topics/selenium" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">selenium</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:20817,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1ac67fef7fb176e6a133124f687d4decd6124925f981c8efb33ce1c759d958c6" title="Topic: apache" href="/topics/apache" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">apache</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22617,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5cb7c0938ce5afdd7e34e899662fb65c00c05691adf5709386a2bf3c9757e0bf" title="Topic: test-automation" href="/topics/test-automation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test-automation</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:60470,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="dc7013655a4b34c563bac5d9c5e62b68f1d0a6c087a9f6d01c9ab9c39a93ff9d" title="Topic: functional-testing" href="/topics/functional-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">functional-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:75363,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="19336a259ca54b98b90c5027b2c3745f75356064299d4c80593d5ef59602e04a" title="Topic: end-to-end-testing" href="/topics/end-to-end-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">end-to-end-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:386839,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fa0944f0341ea51531f1165588c28072874435a08f7aa037be8599ee2f41f4a7" title="Topic: browser-testing" href="/topics/browser-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">browser-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:516522,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c554c1566149fbc302c4dafc41361444871427d86070cf2874cb551014fb6559" title="Topic: e2e-testing" href="/topics/e2e-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">e2e-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:582452,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7656cb1b9a89d9fb99764a8265d49ab5ab90cafcba22ecc03713f4b956e4f4de" title="Topic: testing-library" href="/topics/testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:615352,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="97185ecf519da329f01e13900c934a5180c1f4346b81f12891277243ea524941" title="Topic: bdd-style-testing-framework" href="/topics/bdd-style-testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">bdd-style-testing-framework</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-03-28T18:58:23Z" class="no-wrap">Mar 28, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #4298b8"></span> <span itemprop="programmingLanguage">Groovy</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:19235448,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="02c6505da191ca29e4d364715ffd671ea70519cd9a83f047175a62264aa98ce6" data-turbo="false" href="/agoda-com" data-view-component="true" class="Link">agoda-com</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:104835572,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ab9998099863f7f0ee2c00c8e8ea73da4ca587f08d99e986ab0a662859726411" data-turbo="false" href="/agoda-com/Kakao" data-view-component="true" class="Link text-bold wb-break-word">Kakao</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fagoda-com%2FKakao" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:104835572,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="91cb26373d2c055e27d12d08158933849afe940a43c416ee08eb2a55e34b9988" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1111 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,111" data-view-component="true" class="Counter js-social-count">1.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-104835572" aria-current="true" href="/agoda-com/Kakao" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:104835572,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0bd55d798fa3dee2c1e0f5137f7e1ee2dc3ce12714cafb924036216799a88c73" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-104835572" href="/agoda-com/Kakao/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:104835572,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b557585ab8dd1aadc3dba1d16e3a5fa00e9dfc42e01b4ed956d8e328a4159926" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-104835572" href="/agoda-com/Kakao/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:104835572,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8a9f2786a6bc44fee13b88466c7a123ecea55da40ecfa3ac360da5242351199d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >This repo is no longer supported. Please visit a <a href="https://github.com/KakaoCup/Kakao" class="Link--inTextBlock">https://github.com/KakaoCup/Kakao</a></p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:67,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8525fa5d2caff8d0c714e6a9157a289c05d6e53bd09ec57e44eac8a97441367b" title="Topic: android" href="/topics/android" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">android</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:68,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="67043661799a1daaee3c8e164c284d25b28b521463201b24ae6c2de2e86a930a" title="Topic: kotlin" href="/topics/kotlin" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">kotlin</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12838,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ed58a70f01ff27fde97bd4689583192984db470d0716e48160c8dc7e6c38cd4e" title="Topic: dsl" href="/topics/dsl" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">dsl</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:27623,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6ea1c785b0e4e4a173287b6b62c3f9370cf4ca7360b89fd3fb498ba57aca5283" title="Topic: android-test" href="/topics/android-test" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">android-test</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:28097,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6f6b47a785ccd8b245362a584b1a679799d18807cec79f47f219b21135582b12" title="Topic: espresso" href="/topics/espresso" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">espresso</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:68955,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e29112cda3404e1c21d080af46f37044b6e3f099dfbf8fe4e20d846f49f4011a" title="Topic: android-ui" href="/topics/android-ui" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">android-ui</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:224257,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="213486d59f01be4e1024f55ae29c2afe1f9a367ab0138f9ede70df81a2dcd3eb" title="Topic: ui-testing" href="/topics/ui-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">ui-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:582452,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7656cb1b9a89d9fb99764a8265d49ab5ab90cafcba22ecc03713f4b956e4f4de" title="Topic: testing-library" href="/topics/testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:600393,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="aff93d73be867c23e02fb3640b74064ab568df94a574944e538a5f6457d58f37" title="Topic: testing-tool" href="/topics/testing-tool" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-tool</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2021-05-26T07:38:45Z" class="no-wrap">May 26, 2021</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #A97BFF"></span> <span itemprop="programmingLanguage">Kotlin</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_IMAGE&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:101762821,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="914cf5505a8f8909ed8d94d7b2bcc0f3591e0a10e8ac7c36ba39cbfb17fb9d5d" data-turbo="false" style="max-height:275px" href="/pschanely/CrossHair" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"><img loading="lazy" src="https://repository-images.githubusercontent.com/101762821/0e9f8e00-43e9-11ea-8f42-79e3c77e20f3" alt="CrossHair" class="d-block width-full" ></a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:332622,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="23d68dedf1d411ba2cab7ee524688173c6481cd2dda10e06482df5ed5e7267fa" data-turbo="false" href="/pschanely" data-view-component="true" class="Link">pschanely</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:101762821,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c7d6177d928c903854cf5f630a2e7542745f888f5ba2c08e7f52c1d33f1c8b3a" data-turbo="false" href="/pschanely/CrossHair" data-view-component="true" class="Link text-bold wb-break-word">CrossHair</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fpschanely%2FCrossHair" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:101762821,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7f1f8671ad21c43bf96ace0e6d05a3d0923e649941751459a3903749ece88f15" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1104 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,104" data-view-component="true" class="Counter js-social-count">1.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-101762821" aria-current="true" href="/pschanely/CrossHair" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:101762821,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ba5fbcff3737714a4dfe2487624a3822a6a0a3d668399fd2d61bbc923ae02362" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-101762821" href="/pschanely/CrossHair/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:101762821,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="649b7116921f0d649c4961d83b7a29b5a2931e9277b542ef96d78061eb355e7c" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-101762821" href="/pschanely/CrossHair/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:101762821,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0ded9bf65d06fd1dace2eb1995541dafc9ee32fc025c0db8e877db08012ba378" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-101762821" href="/pschanely/CrossHair/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:101762821,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ee0ed586870bc0ce8217a07b9882bef931a5624e3ad3a6ace88efeaf3d47b8d2" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >An analysis tool for Python that blurs the line between testing and type systems.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:84,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7cc86ac99e002e3b37977375f758aaffd4b0c5ebeb52dc0e9882ba49f4b87cd8" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13728,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c20f9cbaf7ccaeef330e719fa8b3f00f3af30903bc650dae3f68e3a7f4e7336e" title="Topic: static-analysis" href="/topics/static-analysis" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">static-analysis</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:23344,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="84ec5c16032093b6628ae21b5b8899b69ba61d8ed914533eaf1872ea42025cf2" title="Topic: symbolic-execution" href="/topics/symbolic-execution" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">symbolic-execution</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:60483,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b3a0973fe8af26f33dccc9059d34e3f75ec94fd415ac6a9be87f48b95f410767" title="Topic: fuzzing" href="/topics/fuzzing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">fuzzing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:61250,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0437e15971c25b78d05e26def37dd8b2fa40f9a58fea64b979314dda2811af61" title="Topic: dynamic-analysis" href="/topics/dynamic-analysis" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">dynamic-analysis</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65619,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="af4192023eb4ddfe50e762b4c89f3e64be714645802c0ea4a81f125e73f3a00b" title="Topic: z3" href="/topics/z3" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">z3</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:109486,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="213024f2673de55bcb87ae6aab38ce83a563f4592b3174124ac2e2fc6dae5bbc" title="Topic: contracts" href="/topics/contracts" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">contracts</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:196454,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="88d1961d32d07faab30209d5dc927738ad4b1a224c87d82a3ab5163a90dfdb19" title="Topic: hacktoberfest" href="/topics/hacktoberfest" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">hacktoberfest</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:433289,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="64882999afbedf02547d3aa9e0c022cd539391b9a518521159f12de97f5ff38a" title="Topic: concolic-execution" href="/topics/concolic-execution" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">concolic-execution</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:927483,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f7820bf60eeadf9ab824ec3325f5c33ec42ed2079310fc5537c98f5b26f49e04" title="Topic: type-systems" href="/topics/type-systems" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">type-systems</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-04-02T16:14:02Z" class="no-wrap">Apr 2, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:7319262,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="257d9943fcf2de9208ff716926a5c8b971d72542524dd2e17a282e173b18df94" data-turbo="false" href="/tonerdo" data-view-component="true" class="Link">tonerdo</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:98982258,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3520106c95b9d3edc654a35be2b7569cb86615421793a736e4200b388c158ef5" data-turbo="false" href="/tonerdo/pose" data-view-component="true" class="Link text-bold wb-break-word">pose</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Ftonerdo%2Fpose" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:98982258,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1db879dfcaee1de6580ab30fb691e6f035ec3924fc9008e31d5aaaf4991c9647" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1089 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,089" data-view-component="true" class="Counter js-social-count">1.1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-98982258" aria-current="true" href="/tonerdo/pose" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:98982258,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e1985058ccc546df9e3f9ca917a1fcc925954c727c9ef7453125e94c8a41e685" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-98982258" href="/tonerdo/pose/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:98982258,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e965c065e0fb190dede2e0d0437605969982a39ab264e09e7511727c738101c1" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-98982258" href="/tonerdo/pose/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:98982258,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3adc50fe401f8a4fc8bc7396ebc8ca5827b548aae8ca7431fb14ddf6270cc256" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Replace any .NET method (including static and non-virtual) with a delegate</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:9295,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6ad1b7912f34e4cbea4a6191df79bf45dd318e9a82e1e25184a1f88f867eedfd" title="Topic: csharp" href="/topics/csharp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">csharp</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12212,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="061ad92b39322025a1dfca155ef84fb526345c4b3ddea60d9a2a712a82dcf33d" title="Topic: dotnet" href="/topics/dotnet" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">dotnet</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22664,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="aa9d719b9703f0a6bc66964effe78eca336cd8c89a0deeea8a663a9b836299ce" title="Topic: mocking" href="/topics/mocking" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">mocking</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:45523,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3bcfab710ccd248dd568a9f89026b71f9f47f69feeaa828ab3c1a66ca9753151" title="Topic: dotnet-core" href="/topics/dotnet-core" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">dotnet-core</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:109788,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="61dd914b340440b94696e4a25757b6aa028bce02f7a1b91553c2300d1c0582ae" title="Topic: isolation-framework" href="/topics/isolation-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">isolation-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2022-09-23T12:14:55Z" class="no-wrap">Sep 23, 2022</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #178600"></span> <span itemprop="programmingLanguage">C#</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:46604,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="353e294c263e49bfed644f46fa14d200247fb95f470e4d6113f06ef1e84b90c2" data-turbo="false" href="/theory" data-view-component="true" class="Link">theory</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:162838,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="952ceab862d9eabe50c5ae5ce0c6a37d9465b9f674edfdbfa4ec130b724458d6" data-turbo="false" href="/theory/pgtap" data-view-component="true" class="Link text-bold wb-break-word">pgtap</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Ftheory%2Fpgtap" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:162838,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="014b46897455f2b7320994eae4040d103d0c989768e1b7afe4def7024af3ead9" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="1028 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="1,028" data-view-component="true" class="Counter js-social-count">1k</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-162838" aria-current="true" href="/theory/pgtap" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:162838,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="60a79ffd14c08b9b3ccc957dafc16f15c290a899df4747d09ada234477887647" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-162838" href="/theory/pgtap/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:162838,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8f76289ca4ddf1b8db9a8201b0a2e147af0fb374ee6b0c3f13787deee4ace6df" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-162838" href="/theory/pgtap/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:162838,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5494a27c0c335c561a8bccf909152aaa8d70d7739500961e01170e66dfcc1d41" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >PostgreSQL Unit Testing Suite</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:610,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c0e1cc2de31c85dc2dc22ad4363893f42c528f0d17b077abbe5f76ef9577ff4f" title="Topic: tap" href="/topics/tap" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">tap</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:839,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08587df52c94635e76bd124d7761b747bd4b07cf3342f2765ad67ad76bc2ff39" title="Topic: unit-testing" href="/topics/unit-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unit-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:20506,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7bb3d0a69c721f073577dcd7a83cd8d2fcb5341923e093d0d393f4e9ba105105" title="Topic: psql" href="/topics/psql" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">psql</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:74784,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3d8a245b4ea095fe778a8b294b7534efabfb9cf120fdf936592224e1610a4b8b" title="Topic: pgsql" href="/topics/pgsql" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">pgsql</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:237709,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5c7d5f0d547d1a425c4db4c56c99811a8e254dfe68cfc1f35c541ea9288145c3" title="Topic: pgtap" href="/topics/pgtap" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">pgtap</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:582452,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7656cb1b9a89d9fb99764a8265d49ab5ab90cafcba22ecc03713f4b956e4f4de" title="Topic: testing-library" href="/topics/testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-library</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-03-15T22:02:36Z" class="no-wrap">Mar 15, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #336790"></span> <span itemprop="programmingLanguage">PLpgSQL</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_IMAGE&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:486525050,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="82f1de3e9c2a863472c136e5684e1748fd67f0c5bd6112941a5dce90d76ffb48" data-turbo="false" style="max-height:275px" href="/microsoft/HydraLab" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"><img loading="lazy" src="https://repository-images.githubusercontent.com/486525050/5bc99740-95ed-4f97-8213-18ac29697662" alt="HydraLab" class="d-block width-full" ></a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:6154722,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fe9657f1653d2b963cd9f0796ff5e1affb4bb9e0d4aad0584bf8e81ea993dd10" data-turbo="false" href="/microsoft" data-view-component="true" class="Link">microsoft</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:486525050,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e05e8f72690060bd96e95060df5940fead4b567c5856281fc229e94f1193eeb3" data-turbo="false" href="/microsoft/HydraLab" data-view-component="true" class="Link text-bold wb-break-word">HydraLab</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fmicrosoft%2FHydraLab" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:486525050,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ebd73e1b593d57f5a2ef937b9a5d336ca57fbef7849e78a61747960c3b68f394" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="986 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="986" data-view-component="true" class="Counter js-social-count">986</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-486525050" aria-current="true" href="/microsoft/HydraLab" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:486525050,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5ab051167c743da1418c9e7f00c4ec20761ab33603af91ceac70ffe4f7e81913" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-486525050" href="/microsoft/HydraLab/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:486525050,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6748f91b0ba36d230ad8b7065a7282afe0aada2ebdfff7771275a414ca5065ae" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-486525050" href="/microsoft/HydraLab/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:486525050,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8cd36b258e62bb8d729c3f6555b62aa99e4ab0623c78c3d2bbb2a5822ea68fff" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-486525050" href="/microsoft/HydraLab/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:486525050,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f908bd3125f896275c8f48bbe4c1460331435ce7fa5289d1a9b38d38b54b43b3" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Intelligent cloud testing made easy.</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:9164,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d56aa96e4defc1bd922ce8b7303957a67c8836b8d1c6bc30a8c86095ef583423" title="Topic: spring-boot" href="/topics/spring-boot" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">spring-boot</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:9621,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ca37905cd0fd7128b1c916de30d82c669e0c103eb3ff22ea74fe32d37262535f" title="Topic: cross-platform" href="/topics/cross-platform" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cross-platform</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12641,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ac2b61cc510f1842f75f99e92755ab5b8a0e0b2b9a8abd9ace66d83cf048a38c" title="Topic: azure" href="/topics/azure" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">azure</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:22617,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5cb7c0938ce5afdd7e34e899662fb65c00c05691adf5709386a2bf3c9757e0bf" title="Topic: test-automation" href="/topics/test-automation" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">test-automation</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:45326,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f4a30780565016bd34447f28040ecdd14750631a0a7972d52f5a12ca26fcfe09" title="Topic: developer-tools" href="/topics/developer-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">developer-tools</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:224257,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="213486d59f01be4e1024f55ae29c2afe1f9a367ab0138f9ede70df81a2dcd3eb" title="Topic: ui-testing" href="/topics/ui-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">ui-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:225023,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c60442bf4b116ce77d5527636c186b170f1707fc9526715b92c3d914895eef06" title="Topic: mobile-development" href="/topics/mobile-development" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">mobile-development</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:243833,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ea6227c2b79591d7a06a9676c275e03989b93b13a6e392ea5cbea68c18ad496c" title="Topic: performance-testing" href="/topics/performance-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">performance-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:274468,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12a460213e5b90e8c63067a5614e7e6685529bcddfd4823ef932bb35385fe31c" title="Topic: device-farm" href="/topics/device-farm" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">device-farm</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:447450,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9a8b0d4a7f0d212433ab744b7ca188c14d6a5b94cc495e2cf258d68416e707a6" title="Topic: cloud-testing" href="/topics/cloud-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cloud-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:516522,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c554c1566149fbc302c4dafc41361444871427d86070cf2874cb551014fb6559" title="Topic: e2e-testing" href="/topics/e2e-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">e2e-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:752774,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5ec3a70a1bbbb9da7935507427f3575515a2a6b1201b249502745c8ff260962a" title="Topic: platform-engineering" href="/topics/platform-engineering" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">platform-engineering</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1857396,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="81e0d0271a9c39590e0e35c19beda56b840a3fdf489a3168952b8d5e26ed6afd" title="Topic: chatgpt" href="/topics/chatgpt" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">chatgpt</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2042799,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ffae0e11d16fcd971cd20b5b388888699c5ea33f7166bf99e1af4885d4bb3c00" title="Topic: testgpt" href="/topics/testgpt" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testgpt</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-04-01T02:46:34Z" class="no-wrap">Apr 1, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #b07219"></span> <span itemprop="programmingLanguage">Java</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:611171,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e0408964d2eac736d6ac2d26a844b6a793f8daaa73b61d2bf66985395f4a9ef7" data-turbo="false" href="/sheredom" data-view-component="true" class="Link">sheredom</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:47508322,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="53bda0fcde242c6e7463aaea57669dc14d93b1df6e69ba75c8964c4e307fdc49" data-turbo="false" href="/sheredom/utest.h" data-view-component="true" class="Link text-bold wb-break-word">utest.h</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fsheredom%2Futest.h" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:47508322,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1b2383c7cfc549fea5e4a7cb279c601ad95e352b86e739c3e304c2496e0bf880" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="886 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="886" data-view-component="true" class="Counter js-social-count">886</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-47508322" aria-current="true" href="/sheredom/utest.h" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:47508322,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="41cc94c41a075b03f12a4125a4b76cd6ab699b1e09590c84f2e00fc2f0b1143a" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-47508322" href="/sheredom/utest.h/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:47508322,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="88221ec38f202a560442910d866e8be7c6673d4b0e1c396af46f5c0b14f0da86" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-47508322" href="/sheredom/utest.h/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:47508322,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="96bd1cf081094f458fee34ee22c3748a701a08d10536d152cf0eb71098707a7f" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >🧪 single header unit testing framework for C and C++</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:107,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="59635a521d4c8f6299407d5866862a7caa18ea81871bb57a9b15e35f1fb253f5" title="Topic: c" href="/topics/c" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">c</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:9802,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5041e0164337ca283c23e5fb3fea3903a6be3b3da0cca68db3f5a4abdb35dc19" title="Topic: cpp" href="/topics/cpp" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">cpp</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:315265,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="56dfa0d16d19d0be46dd783e3cdc4c1ebee743c533336852d494a06f721b6987" title="Topic: unit-test" href="/topics/unit-test" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unit-test</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2024-09-02T14:53:14Z" class="no-wrap">Sep 2, 2024</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #f34b7d"></span> <span itemprop="programmingLanguage">C++</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2314423,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5587d113143c2e45e3f545f2a174ab6ac1db9ecf0f18ca9acebb50cb08f01d8a" data-turbo="false" href="/trailofbits" data-view-component="true" class="Link">trailofbits</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:108593287,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="93ddb40d2e39002b25857da9bc4482125567191578238dcbcd7a6fa49c3e64aa" data-turbo="false" href="/trailofbits/deepstate" data-view-component="true" class="Link text-bold wb-break-word">deepstate</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Ftrailofbits%2Fdeepstate" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:108593287,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="10485ca134ab7a9a6a48838ed9b3b60efc403e57d83f4b20e57188c4b0b525c6" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="828 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="828" data-view-component="true" class="Counter js-social-count">828</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-108593287" aria-current="true" href="/trailofbits/deepstate" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:108593287,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="001c47730e2848c16fb02af71b40fd7a3affd0bf29664a8a4bdb4601e871d78e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-108593287" href="/trailofbits/deepstate/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:108593287,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1487f37dd8b88f3164e7276ee68a474f8f9b50de6d281573c5d7727feedb6525" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-108593287" href="/trailofbits/deepstate/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:108593287,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ecc667a83565ae3e91a4b3e313c19c63bc037dbc4ad0694430faf82bf21154f3" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >A unit test-like interface for fuzzing and symbolic execution</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:839,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08587df52c94635e76bd124d7761b747bd4b07cf3342f2765ad67ad76bc2ff39" title="Topic: unit-testing" href="/topics/unit-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unit-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:23344,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="84ec5c16032093b6628ae21b5b8899b69ba61d8ed914533eaf1872ea42025cf2" title="Topic: symbolic-execution" href="/topics/symbolic-execution" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">symbolic-execution</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:44587,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3721feb23e48348a56ed8eb35d5ccc67564425fb6a8966d81762b69e84c0b1ee" title="Topic: property-based-testing" href="/topics/property-based-testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">property-based-testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:60483,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b3a0973fe8af26f33dccc9059d34e3f75ec94fd415ac6a9be87f48b95f410767" title="Topic: fuzzing" href="/topics/fuzzing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">fuzzing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65334,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fb41329f9bf40b1d569041428a18b51e192a2352d593ec934bc7da5fa1b924e1" title="Topic: testing-tools" href="/topics/testing-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-tools</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-01-23T22:49:30Z" class="no-wrap">Jan 23, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1263082,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0557832a5202f15dfcc676166a0f35f0242c351c153cce580bc7873cad8956fd" data-turbo="false" href="/nose-devs" data-view-component="true" class="Link">nose-devs</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2980827,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7022c6ef52d7352444baa8ffcba69c031599f5ed13b5d4f0775ab71f2340fa10" data-turbo="false" href="/nose-devs/nose2" data-view-component="true" class="Link text-bold wb-break-word">nose2</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fnose-devs%2Fnose2" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:2980827,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3de5d06143bbe420cbe9ca74375079f8919feb59b4a183244a6b8615fb251046" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="802 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="802" data-view-component="true" class="Counter js-social-count">802</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-2980827" aria-current="true" href="/nose-devs/nose2" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2980827,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ac2da211af40641702741438c1af983cec452937c33f202a05b30534570b97fc" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-2980827" href="/nose-devs/nose2/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2980827,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="03e87bac073fefdfef7f08ff3c976cc4ff001d7c2fa30ffc5dd279bc06d2227b" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-2980827" href="/nose-devs/nose2/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2980827,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="acfc802390ec7815d4e26fe611163af418cfdacc416f913174fc2afc65058430" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >The successor to nose, based on unittest2</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:84,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7cc86ac99e002e3b37977375f758aaffd4b0c5ebeb52dc0e9882ba49f4b87cd8" title="Topic: python" href="/topics/python" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:183,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="eed5ce42cbbb7a4467703bb93b962b8ae85d6024e157d48468f413650247d098" title="Topic: testing" href="/topics/testing" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2421,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="410d29442543c9c9c171ac65b7430a6874722f612b1b347b71ed2596b6cd6031" title="Topic: library" href="/topics/library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:14032,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f4e2009018a0e541b5a02cfb3852bd99fa55dfbf719fcc59752f975f4b66d0c0" title="Topic: python-library" href="/topics/python-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:23214,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="36805eca5292d0e7b778ec6589c401f4e528154a5e69fcf142251ea979572ebd" title="Topic: python3" href="/topics/python3" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python3</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:35058,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="53f1579f5e7c66e03cba2d6d5cd2e0b78ddbf2158bb2c4f0b01715d2f4d85e0a" title="Topic: unittest" href="/topics/unittest" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unittest</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65334,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fb41329f9bf40b1d569041428a18b51e192a2352d593ec934bc7da5fa1b924e1" title="Topic: testing-tools" href="/topics/testing-tools" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-tools</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:84421,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="08fba46ee16d7019e55ccab28ddd1166a52aa7e20e6d248d9e88545e6113e633" title="Topic: python-3" href="/topics/python-3" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python-3</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:109598,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a7f6088b72f5f09321e915804e631cfb760a7206a41127d9cbce98f73815536b" title="Topic: python-2" href="/topics/python-2" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python-2</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:126928,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6c443e28e65c9d92308fe49984747b889b10c0da56b1390ed0697e3b95202e60" title="Topic: python2" href="/topics/python2" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">python2</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:177695,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f9eaf4fbb1aacd1593db4f4b9d958170e6dbf956e75aae7c4244eba9236cd54d" title="Topic: nose" href="/topics/nose" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">nose</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:232249,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="02952c70986ea5efd6b270cb4d8a4a0b49bdbcdbf86b5017a49a75182a77546a" title="Topic: unittesting" href="/topics/unittesting" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unittesting</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:315265,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="56dfa0d16d19d0be46dd783e3cdc4c1ebee743c533336852d494a06f721b6987" title="Topic: unit-test" href="/topics/unit-test" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">unit-test</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:461565,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="926b31c36c34ab7ffeb4ed42366ab8c3bcca08add73e72c2f638d22d5355de6b" title="Topic: nosetest" href="/topics/nosetest" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">nosetest</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:499264,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7e202fde2f1f1009207eb1f51f3572c24df580b2f1a300cc74ba76814b6e3302" title="Topic: nosetests" href="/topics/nosetests" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">nosetests</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:582452,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7656cb1b9a89d9fb99764a8265d49ab5ab90cafcba22ecc03713f4b956e4f4de" title="Topic: testing-library" href="/topics/testing-library" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-library</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:600393,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="aff93d73be867c23e02fb3640b74064ab568df94a574944e538a5f6457d58f37" title="Topic: testing-tool" href="/topics/testing-tool" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-tool</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:726543,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="54c9e412c01c8d8437878886c24d794eeb473014a085d3c39670e3d900ccf6a1" title="Topic: nose2" href="/topics/nose2" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">nose2</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-03-31T16:48:52Z" class="no-wrap">Mar 31, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #3572A5"></span> <span itemprop="programmingLanguage">Python</span> </span> </li> </ul> </div> </div> </article> <article class="border rounded color-shadow-small color-bg-subtle my-4"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_IMAGE&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65654242,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="7edfd362f03f33a3a0cf4e574b21ec0d3a881449e5e2bb384316b839c898be49" data-turbo="false" style="max-height:275px" href="/wvlet/airframe" data-view-component="true" class="overflow-hidden flex-items-center rounded-top-2 Link color-border-muted border-bottom d-flex position-relative"><img loading="lazy" src="https://repository-images.githubusercontent.com/65654242/a9bbd680-d5b4-11e9-8097-f32e6e22e03f" alt="airframe" class="d-block width-full" ></a> <div class="px-3"> <div class="d-flex flex-justify-between flex-items-start flex-wrap gap-2 my-3"> <div class="d-flex flex-1"> <span style="margin-top:2px"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </span> <h3 class="f3 color-fg-muted text-normal lh-condensed" > <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;OWNER&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_OWNER_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:15753188,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1c0476443f1ed7d2a943114d6385a3bc7770c146d0e1321fd0264748c3802fa3" data-turbo="false" href="/wvlet" data-view-component="true" class="Link">wvlet</a> / <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;REPOSITORY_NAME_HEADING&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65654242,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1b57164a7663166d8f708591cf4add859efcd950467952fbb8487c8168b5cc9c" data-turbo="false" href="/wvlet/airframe" data-view-component="true" class="Link text-bold wb-break-word">airframe</a> </h3> </div> <div class="d-flex flex-items-center"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Fwvlet%2Fairframe" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:65654242,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="200d93acd8614df944917e10d7ddd6dad39f00271e6b9160573a6f1058121fb7" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn color-bg-default"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="638 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="638" data-view-component="true" class="Counter js-social-count">638</span> </a></div> </div> </div> </div> <nav aria-label="Repository menu" data-view-component="true" class="tabnav px-3 mb-0"> <ul data-view-component="true" class="tabnav-tabs"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab-65654242" aria-current="true" href="/wvlet/airframe" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY&quot;,&quot;click_visual_representation&quot;:&quot;CODE_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65654242,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1d0a229cc74a8866882ac57c4f499ceabe1c0eed707ee98e3bf68602d534a01d" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code color-fg-default"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> Code </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab-65654242" href="/wvlet/airframe/issues" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_ISSUES&quot;,&quot;click_visual_representation&quot;:&quot;ISSUES_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65654242,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fc1a7751a6c6caeb8268bbd9e64eb51c7503759f9dd1a655d831017aaa3ef41e" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened color-fg-muted"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> Issues </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab-65654242" href="/wvlet/airframe/pulls" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_PULL_REQUESTS&quot;,&quot;click_visual_representation&quot;:&quot;PULL_REQUESTS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65654242,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1eacd9013c3c8538fc194d384efa37e74348450f581b586f8d1234fee327ae2a" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request color-fg-muted"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> Pull requests </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="discussions-tab-65654242" href="/wvlet/airframe/discussions" data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;REPOSITORY_DISCUSSIONS&quot;,&quot;click_visual_representation&quot;:&quot;DISCUSSIONS_TAB&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:65654242,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6fb9555abf7e921aa3de40d95c4723364b7e23aeefd7fffe691c94491d4fc7f2" data-turbo="false" data-view-component="true" class="tabnav-tab f6 px-2 py-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion color-fg-muted"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> Discussions </a></li> </ul> </nav> <div class="color-bg-default rounded-bottom-2"> <div class="px-3 pt-3"> <p class="color-fg-muted mb-0" >Essential Building Blocks for Scala</p> </div> <div class="d-flex flex-wrap border-bottom color-border-muted px-3 pt-2 pb-2"> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:77,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bf30a344c17503a7dc57dfbf6a15e65f0ac92961539a40fc5d941c9e6084cb1e" title="Topic: config" href="/topics/config" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">config</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:674,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="335ca2f9e97cd63351019ff81b68d8002d3695ba2975be766eade0d8461c9f21" title="Topic: serialization" href="/topics/serialization" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">serialization</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:2111,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="dcb1dd8b2e898a771d7a9d79c1bb49ed1d28064478ab526dad17a99fc01f7708" title="Topic: json" href="/topics/json" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">json</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:7621,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e6662cfa2aa21285d80111cf4c6a26dfd455a5a76523362ed9ace577981ab536" title="Topic: scala" href="/topics/scala" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">scala</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:8929,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a71ecc09fd4b32788ea468ab7686a363d963bcc93f49b8fa40c90232eba439ce" title="Topic: sql" href="/topics/sql" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">sql</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:12622,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="170a3e92bbb28ab3a33a49be635c84f800596b6287b42fd333a133267198e7d3" title="Topic: metrics" href="/topics/metrics" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">metrics</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13288,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="21262104262df8ea484ea99c566bbe8a529ad3e2d2a4c3bc70f80868f0ee29ec" title="Topic: dependency-injection" href="/topics/dependency-injection" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">dependency-injection</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:13373,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="41b4d4a6495ce749a65a4e3bdb19626fddcd0d299b36d56cada3dbca15537c50" title="Topic: logger" href="/topics/logger" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">logger</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:20981,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f1161e7cc617c01710b735a04a2da510c11ca3a9720eaae5c074995db8695ba8" title="Topic: grpc" href="/topics/grpc" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">grpc</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:23740,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="81e3ef9a6fc710716a777c11486f036882f7fb50efd2be79d29fccdac6315017" title="Topic: rpc" href="/topics/rpc" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">rpc</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:39548,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f331759fa4184b748423b94640253f77da57afcc69b28746f4304402666168a2" title="Topic: msgpack" href="/topics/msgpack" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">msgpack</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:39571,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a1ee1dc9db1e291380466467b6951f50e816ed01cfd6f359883af5fb7f369ace" title="Topic: scalajs" href="/topics/scalajs" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">scalajs</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:61128,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="49c4d8bf919558b17b765b0a8900c646b94c89d633f36052ea214f057e56d869" title="Topic: jmx" href="/topics/jmx" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">jmx</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:94722,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="79a6058dc86f178b2d5b738133c71f8078365dcc0be2c7a330a91e06dd7a3e58" title="Topic: guice" href="/topics/guice" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">guice</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:172835,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="544a7f59e63e51b23cd1b2ffff589f43634e94dd3131ba80a042b48f42d63245" title="Topic: command-line-parser" href="/topics/command-line-parser" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">command-line-parser</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:398192,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="12c1f288049e58931f71d3dfcb7cdb294b8969374270d9442a64b43b2e7f7960" title="Topic: testing-framework" href="/topics/testing-framework" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">testing-framework</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:972938,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ba1dcc4b148505c4dd5ff2b1a805b6a2448be8cbf0a153080f87e767008e48c5" title="Topic: airframe" href="/topics/airframe" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">airframe</a> <a data-hydro-click="{&quot;event_type&quot;:&quot;explore.click&quot;,&quot;payload&quot;:{&quot;click_context&quot;:&quot;REPOSITORY_CARD&quot;,&quot;click_target&quot;:&quot;TOPIC&quot;,&quot;click_visual_representation&quot;:&quot;TOPIC_TAG&quot;,&quot;actor_id&quot;:null,&quot;record_id&quot;:1071798,&quot;originating_url&quot;:&quot;https://github.com/topics/testing-framework&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="1c6f79de131e55f7df75ed4f06db0e8860083de588d167133ce462421ba57576" title="Topic: airspec" href="/topics/airspec" data-view-component="true" class="topic-tag topic-tag-link Link f6 mb-2">airspec</a> </div> <div class="p-3"> <ul class="d-flex f6 list-style-none color-fg-muted"> <li class="mr-4"> Updated <relative-time datetime="2025-04-03T01:04:55Z" class="no-wrap">Apr 3, 2025</relative-time> </li> <li class="mr-4"> <span class="f6 my-1 ml-0"> <span class="repo-language-color" style="background-color: #c22d40"></span> <span itemprop="programmingLanguage">Scala</span> </span> </li> </ul> </div> </div> </article> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="ajax-pagination-form js-ajax-pagination" data-turbo="false" action="https://github.com/topics/testing-framework" accept-charset="UTF-8" method="get"> <input name="page" type="hidden" value="2"> <button type="submit" class="ajax-pagination-btn btn color-border-default f6 mt-0 width-full" data-disable-with="Loading more..." > Load more&hellip; </button> </form> </div> <div class="col-md-4 col-lg-3"> <dl class="my-4"> <dt class="d-none"> Followers </dt> <dd class="mb-1 color-fg-muted"> <svg aria-label="Topic followers" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people mr-1"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> 15.3k followers </dd> <dt class="d-none"> Wikipedia </dt> <dd class="mb-1"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link color-fg-muted mr-1"> <path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path> </svg> <a href="https://en.wikipedia.org/wiki/Software_testing" aria-label="en.wikipedia.org/wiki/Software_testing"> <span class="css-truncate css-truncate-target" > Wikipedia </span> </a> </dd> </dl> <h2 class="h4 mb-2"> Related Topics </h2> <a title="Topic: e2e-testing" href="/topics/e2e-testing" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> e2e-testing </a> <a title="Topic: fuzzing" href="/topics/fuzzing" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> fuzzing </a> <a title="Topic: integration-testing" href="/topics/integration-testing" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> integration-testing </a> <a title="Topic: mutation-testing" href="/topics/mutation-testing" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> mutation-testing </a> <a title="Topic: regression-testing" href="/topics/regression-testing" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> regression-testing </a> <a title="Topic: rspec" href="/topics/rspec" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> rspec </a> <a title="Topic: smoke-tests" href="/topics/smoke-tests" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> smoke-tests </a> <a title="Topic: test-automation" href="/topics/test-automation" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> test-automation </a> <a title="Topic: unit-testing" href="/topics/unit-testing" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> unit-testing </a> <a title="Topic: xunit" href="/topics/xunit" data-view-component="true" class="topic-tag topic-tag-link f6 my-1"> xunit </a> </div> </div> </div> </div> </main> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <span> &copy; 2025 GitHub,&nbsp;Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10