{"id":1529,"date":"2026-05-24T05:09:24","date_gmt":"2026-05-24T05:09:24","guid":{"rendered":"https:\/\/razvanvancea.ro\/blog\/?p=1529"},"modified":"2026-05-24T05:24:30","modified_gmt":"2026-05-24T05:24:30","slug":"cleaner-asserts-in-grafana-k6-load-tests-using-expect","status":"publish","type":"post","link":"https:\/\/razvanvancea.ro\/blog\/2026\/05\/24\/cleaner-asserts-in-grafana-k6-load-tests-using-expect\/","title":{"rendered":"Cleaner asserts in Grafana k6 load tests using expect"},"content":{"rendered":"<div id=\"bsf_rt_marker\"><\/div>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1529\" class=\"elementor elementor-1529\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dc7e5bb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"dc7e5bb\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2119703\" data-id=\"2119703\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-49d9c7e elementor-widget elementor-widget-text-editor\" data-id=\"49d9c7e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Grafana k6 provides an <code data-start=\"566\" data-end=\"576\">expect()<\/code> function through the <code data-start=\"598\" data-end=\"610\">k6-testing<\/code>\u00a0library. It lets you write readable assertions such as <code data-start=\"677\" data-end=\"685\">toBe()<\/code>, <code data-start=\"687\" data-end=\"700\">toContain()<\/code>, <code data-start=\"702\" data-end=\"718\">toHaveLength()<\/code>, and <code data-start=\"724\" data-end=\"738\">toBeTruthy()<\/code>. According to the Grafana documentation, <code data-start=\"780\" data-end=\"790\">expect()<\/code> wraps a value and returns an expectation object with assertion methods. It also supports both regular assertions and soft assertions.<br \/><br \/><a href=\"https:\/\/grafana.com\/docs\/k6\/latest\/javascript-api\/jslib\/testing\/expect\/\" target=\"_blank\" rel=\"noopener\">Docs HERE<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d0644f8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d0644f8\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a963c85\" data-id=\"a963c85\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6c50184 elementor-widget elementor-widget-heading\" data-id=\"6c50184\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">expect() vs expect.soft()<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-23d0f3f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"23d0f3f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fb2f5bb\" data-id=\"fb2f5bb\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4be7e54 elementor-widget elementor-widget-text-editor\" data-id=\"4be7e54\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1002\" data-end=\"1170\">A regular <code data-start=\"1012\" data-end=\"1022\">expect()<\/code> assertion fails immediately when the condition is not met. That can be useful when the current iteration should stop as soon as something is wrong.<\/p><p data-start=\"1172\" data-end=\"1229\">For load testing, though, I often prefer <code data-start=\"1213\" data-end=\"1228\">expect.soft()<\/code>.<\/p><p data-start=\"1231\" data-end=\"1577\">Soft assertions do not stop the test execution immediately. Instead, they mark the test as failed while allowing the script to continue running. That failed soft assertions can make k6 eventually exit with code <code data-start=\"1472\" data-end=\"1477\">110<\/code>, while still letting the test reach its normal end condition.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-402a156 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"402a156\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2c36a5d\" data-id=\"2c36a5d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-83ecfaf elementor-widget elementor-widget-image\" data-id=\"83ecfaf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"640\" height=\"312\" src=\"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02-1024x499.png\" class=\"attachment-large size-large wp-image-1531\" alt=\"k6-expect\" srcset=\"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02-1024x499.png 1024w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02-300x146.png 300w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02-768x374.png 768w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02-850x414.png 850w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02-24x12.png 24w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02-36x18.png 36w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02-48x23.png 48w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.04.02.png 1469w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3f7ae77 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3f7ae77\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-48cd3fc\" data-id=\"48cd3fc\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a9c7b46 elementor-widget elementor-widget-heading\" data-id=\"a9c7b46\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Why this style is useful<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b7c021e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b7c021e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-349b24d\" data-id=\"349b24d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6d2943b elementor-widget elementor-widget-text-editor\" data-id=\"6d2943b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The nice thing about this approach is readability. These assertions almost document the API contract by themselves:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d2c603e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d2c603e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-86530dd\" data-id=\"86530dd\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f06c08d elementor-widget elementor-widget-image\" data-id=\"f06c08d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"640\" height=\"44\" src=\"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.05.28.png\" class=\"attachment-large size-large wp-image-1532\" alt=\"k6-expect-status\" srcset=\"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.05.28.png 779w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.05.28-300x21.png 300w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.05.28-768x53.png 768w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.05.28-24x2.png 24w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.05.28-36x2.png 36w, https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-24-at-08.05.28-48x3.png 48w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-590a106 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"590a106\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b1c6623\" data-id=\"b1c6623\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c6bd71c elementor-widget elementor-widget-text-editor\" data-id=\"c6bd71c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"3025\" data-end=\"3057\">That line tells us three things:<\/p><p data-start=\"3059\" data-end=\"3092\">The actual value is <code data-start=\"3079\" data-end=\"3091\">res.status<\/code>.<\/p><p data-start=\"3094\" data-end=\"3140\">The failure message is <code data-start=\"3117\" data-end=\"3139\">status should be 200<\/code>.<\/p><p data-start=\"3142\" data-end=\"3170\">The expected value is <code data-start=\"3164\" data-end=\"3169\">200<\/code>.<\/p><p data-start=\"3172\" data-end=\"3267\">This is easier to scan than a large <code data-start=\"3208\" data-end=\"3217\">check()<\/code> block when you have several response validations.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d194e09 elementor-widget elementor-widget-heading\" data-id=\"d194e09\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a559b9d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"a559b9d\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c580973\" data-id=\"c580973\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d30363a elementor-widget elementor-widget-text-editor\" data-id=\"d30363a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"4614\" data-end=\"4850\"><code data-start=\"4614\" data-end=\"4622\">expect<\/code> makes k6 scripts feel closer to modern JavaScript test code. For API load testing, <code data-start=\"4706\" data-end=\"4721\">expect.soft()<\/code> is usually the more forgiving and informative option because it lets the test continue while still reporting assertion failures.<\/p><p data-start=\"4852\" data-end=\"5020\">In short: use hard <code data-start=\"4871\" data-end=\"4881\">expect()<\/code> when the iteration should stop immediately, and use <code data-start=\"4934\" data-end=\"4949\">expect.soft()<\/code> when you want better failure visibility during the full load test run.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6bd69c8 elementor-widget elementor-widget-spacer\" data-id=\"6bd69c8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-affdc58 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"affdc58\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-cfed821\" data-id=\"cfed821\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1a0213a elementor-widget elementor-widget-text-editor\" data-id=\"1a0213a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Enjoyed this article?<br \/>I share more practical automation tips on\u00a0<a href=\"https:\/\/www.youtube.com\/c\/LearnwithRV\/videos\" target=\"_blank\" rel=\"noopener\"><strong>YouTube<\/strong><\/a>\u00a0and\u00a0<a href=\"https:\/\/www.linkedin.com\/in\/razvanvancea\/\" target=\"_blank\" rel=\"noopener\"><strong>LinkedIn<\/strong><\/a>.<\/p><p><strong>Need structured guidance instead of learning alone?<\/strong><br \/>I offer\u00a0<strong>1-on-1 mentoring<\/strong>\u00a0&#8211; learn more \u2192\u00a0<strong><a href=\"https:\/\/razvanvancea.ro\/1on1.html\" target=\"_blank\" rel=\"noopener\">HERE<\/a><\/strong><\/p><p>Or email me at\u00a0<strong>iamqarv [at] gmail [dot] com<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Grafana k6 provides an expect() function through the k6-testing\u00a0library. It lets you write readable assertions&#8230;<\/p>\n","protected":false},"author":2,"featured_media":1533,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[20,12],"tags":[],"class_list":["post-1529","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-k6","category-tools"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/razvanvancea.ro\/blog\/wp-content\/uploads\/2026\/05\/Copy-of-Copy-of-Copy-of-Copy-of-Copy-of-Your-paragraph-text.png","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/posts\/1529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/comments?post=1529"}],"version-history":[{"count":6,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/posts\/1529\/revisions"}],"predecessor-version":[{"id":1539,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/posts\/1529\/revisions\/1539"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/media\/1533"}],"wp:attachment":[{"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/media?parent=1529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/categories?post=1529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/razvanvancea.ro\/blog\/wp-json\/wp\/v2\/tags?post=1529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}