=== Test case: gdpr_SUITE:dont_retrieve_other_user_pubsub_payload/1 (click for source code) === Config value: [{group,retrieve_personal_data_pubsub}, {watchdog,<0.13192.0>}, {protocol,cli}, {schema_endpoint,admin}, {{ejabberd_cwd,mongooseim@localhost}, "/home/circleci/project/_build/mim1/rel/mongooseim"}, {preset,"ldap_mnesia"}, {mim_data_dir,"/home/circleci/project/big_tests/tests/gdpr_SUITE_data"}, {tc_logfile,"/home/circleci/project/big_tests/ct_report/ct_run.test@5bbc5a46dfe3.2024-01-15_11.59.33/big_tests.tests.gdpr_SUITE.logs/run.2024-01-15_12.01.11/gdpr_suite.dont_retrieve_other_user_pubsub_payload.html"}, {tc_group_properties,[{name,retrieve_personal_data_pubsub}]}, {tc_group_path,[[{name,retrieve_personal_data}]]}, {data_dir,"/home/circleci/project/big_tests/_build/default/lib/mongoose_tests/ebin/gdpr_SUITE_data/"}, {priv_dir,"/home/circleci/project/big_tests/ct_report/ct_run.test@5bbc5a46dfe3.2024-01-15_11.59.33/big_tests.tests.gdpr_SUITE.logs/run.2024-01-15_12.01.11/log_private/"}, {{saved_modules,mongooseim@localhost,<<"localhost">>}, #{mod_vcard => #{matches => 30, host => {prefix,<<"vjud.">>}, search => true, ldap => #{filter => <<"(objectClass=inetOrgPerson)">>, base => <<"ou=Users,dc=esl,dc=com">>,deref => never, vcard_map => [{<<"NICKNAME">>,<<"%u">>,[]}, {<<"FN">>,<<"%s">>,[<<"displayName">>]}, {<<"FAMILY">>,<<"%s">>,[<<"sn">>]}, {<<"GIVEN">>,<<"%s">>,[<<"givenName">>]}, {<<"MIDDLE">>,<<"%s">>,[<<"initials">>]}, {<<"ORGNAME">>,<<"%s">>,[<<"o">>]}, {<<"ORGUNIT">>,<<"%s">>,[<<"ou">>]}, {<<"CTRY">>,<<"%s">>,[<<"c">>]}, {<<"LOCALITY">>,<<"%s">>,[<<"l">>]}, {<<"STREET">>,<<"%s">>,[<<"street">>]}, {<<"REGION">>,<<"%s">>,[<<"st">>]}, {<<"PCODE">>,<<"%s">>,[<<"postalCode">>]}, {<<"TITLE">>,<<"%s">>,[<<"title">>]}, {<<"URL">>,<<"%s">>,[<<"labeleduri">>]}, {<<"DESC">>,<<"%s">>,[<<"description">>]}, {<<"TEL">>,<<"%s">>,[<<"telephoneNumber">>]}, {<<"EMAIL">>,<<"%s">>,[<<"mail">>]}, {<<"BDAY">>,<<"%s">>,[<<"birthDay">>]}, {<<"ROLE">>,<<"%s">>,[<<"employeeType">>]}, {<<"PHOTO">>,<<"%s">>,[<<"jpegPhoto">>]}], pool_tag => default, uids => [{<<"uid">>,<<"%u">>}], search_fields => [{<<"User">>,<<"%u">>}, {<<"Full Name">>,<<"displayName">>}, {<<"Given Name">>,<<"givenName">>}, {<<"Middle Name">>,<<"initials">>}, {<<"Family Name">>,<<"sn">>}, {<<"Nickname">>,<<"%u">>}, {<<"Birthday">>,<<"birthDay">>}, {<<"Country">>,<<"c">>}, {<<"City">>,<<"l">>}, {<<"Email">>,<<"mail">>}, {<<"Organization Name">>,<<"o">>}, {<<"Organization Unit">>,<<"ou">>}], search_reported => [{<<"Full Name">>,<<"FN">>}, {<<"Given Name">>,<<"FIRST">>}, {<<"Middle Name">>,<<"MIDDLE">>}, {<<"Family Name">>,<<"LAST">>}, {<<"Nickname">>,<<"NICK">>}, {<<"Birthday">>,<<"BDAY">>}, {<<"Country">>,<<"CTRY">>}, {<<"City">>,<<"LOCALITY">>}, {<<"Email">>,<<"EMAIL">>}, {<<"Organization Name">>,<<"ORGNAME">>}, {<<"Organization Unit">>,<<"ORGUNIT">>}], search_operator => 'and',binary_search_fields => []}, iqdisc => parallel,backend => ldap}, mod_roster => #{iqdisc => one_queue,backend => mnesia,versioning => false, store_current_id => false}, mod_sic => #{iqdisc => one_queue}, mod_register => #{access => register,iqdisc => one_queue, registration_watchers => [],password_strength => 0, ip_access => [{allow,"127.0.0.0/8"},{deny,"0.0.0.0/0"}]}, mod_amp => #{}, mod_disco => #{iqdisc => one_queue,server_info => [],extra_domains => [], users_can_see_hidden_services => false}, mod_presence => #{}, mod_stream_management => #{buffer => true,ack => true,backend => mnesia, stale_h => #{enabled => false,repeat_after => 1800,geriatric => 3600}, buffer_max => 100,ack_freq => 1,resume_timeout => 600}, mod_adhoc => #{iqdisc => one_queue,report_commands_node => false}, mod_bosh => #{backend => mnesia,inactivity => 30,max_pause => 120, max_wait => infinity,server_acks => false}, mod_cache_users => #{strategy => fifo,number_of_segments => 5,time_to_live => 2}, mod_carboncopy => #{iqdisc => no_queue}}}] === Current directory is "/home/circleci/project/big_tests/ct_report/ct_run.test@5bbc5a46dfe3.2024-01-15_11.59.33" === Started at 2024-01-15 12:01:13
*** User 2024-01-15 12:01:13.775 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <stream:stream to='localhost' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
*** User 2024-01-15 12:01:13.775 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='d5fd59f77cba2783' from='localhost' version='1.0' xml:lang='en'>
*** User 2024-01-15 12:01:13.776 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <stream:features> <c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='https://www.erlang-solutions.com/products/mongooseim.html' ver='hrrptIuoH3BHt7UccOPi+EUROLc='/> <register xmlns='http://jabber.org/features/iq-register'/> <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/> <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <mechanism>PLAIN</mechanism> </mechanisms> <amp xmlns='http://jabber.org/feature/amp'/> <sm xmlns='urn:xmpp:sm:3'/> </stream:features>
*** User 2024-01-15 12:01:13.776 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AGFsaWNFX2RvbnRfcmV0cmlldmVfb3RoZXJfdXNlcl9wdWJzdWJfcGF5bG9hZF82MDIAbWF0eWdyeXNh</auth>
*** User 2024-01-15 12:01:13.777 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
*** User 2024-01-15 12:01:13.777 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <stream:stream to='localhost' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
*** User 2024-01-15 12:01:13.778 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='0da5ef5c3e115677' from='localhost' version='1.0' xml:lang='en' to='alice_dont_retrieve_other_user_pubsub_payload_602@localhost'>
*** User 2024-01-15 12:01:13.778 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <stream:features> <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> <c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='https://www.erlang-solutions.com/products/mongooseim.html' ver='hrrptIuoH3BHt7UccOPi+EUROLc='/> <register xmlns='http://jabber.org/features/iq-register'/> <amp xmlns='http://jabber.org/feature/amp'/> <sm xmlns='urn:xmpp:sm:3'/> </stream:features>
*** User 2024-01-15 12:01:13.778 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq type='set' id='8241f140776af8b8d8ebc25da5f0c4c8'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <resource>res1</resource> </bind> </iq>
*** User 2024-01-15 12:01:13.778 ***🔗 alicE_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq id='8241f140776af8b8d8ebc25da5f0c4c8' type='result'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <jid>alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1</jid> </bind> </iq>
*** User 2024-01-15 12:01:13.779 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq type='set' id='9c4eede7cf38797df3cea5872502a652'> <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> </iq>
*** User 2024-01-15 12:01:13.779 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq from='localhost' to='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' id='9c4eede7cf38797df3cea5872502a652' type='result'> <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> </iq>
*** User 2024-01-15 12:01:13.779 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <presence/>
*** User 2024-01-15 12:01:13.781 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <presence from='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' to='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1'/>
*** User 2024-01-15 12:01:13.781 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <stream:stream to='localhost' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
*** User 2024-01-15 12:01:13.782 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='d4a7299b01cedd88' from='localhost' version='1.0' xml:lang='en'>
*** User 2024-01-15 12:01:13.782 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <stream:features> <c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='https://www.erlang-solutions.com/products/mongooseim.html' ver='hrrptIuoH3BHt7UccOPi+EUROLc='/> <register xmlns='http://jabber.org/features/iq-register'/> <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/> <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> <mechanism>PLAIN</mechanism> </mechanisms> <amp xmlns='http://jabber.org/feature/amp'/> <sm xmlns='urn:xmpp:sm:3'/> </stream:features>
*** User 2024-01-15 12:01:13.782 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>AGJPYl9kb250X3JldHJpZXZlX290aGVyX3VzZXJfcHVic3ViX3BheWxvYWRfNjAyAG1ha3JvbGlrYQ==</auth>
*** User 2024-01-15 12:01:13.784 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
*** User 2024-01-15 12:01:13.784 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <stream:stream to='localhost' version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
*** User 2024-01-15 12:01:13.784 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='7ff64bd6d2dcdf71' from='localhost' version='1.0' xml:lang='en' to='bob_dont_retrieve_other_user_pubsub_payload_602@localhost'>
*** User 2024-01-15 12:01:13.785 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <stream:features> <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> <c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='https://www.erlang-solutions.com/products/mongooseim.html' ver='hrrptIuoH3BHt7UccOPi+EUROLc='/> <register xmlns='http://jabber.org/features/iq-register'/> <amp xmlns='http://jabber.org/feature/amp'/> <sm xmlns='urn:xmpp:sm:3'/> </stream:features>
*** User 2024-01-15 12:01:13.785 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq type='set' id='ed29aad37c60872d95aa3c073647b8a7'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <resource>res1</resource> </bind> </iq>
*** User 2024-01-15 12:01:13.785 ***🔗 bOb_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq id='ed29aad37c60872d95aa3c073647b8a7' type='result'> <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> <jid>bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1</jid> </bind> </iq>
*** User 2024-01-15 12:01:13.785 ***🔗 bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq type='set' id='93f5bb2d4b1032eb1c115c88e9ae7a7e'> <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> </iq>
*** User 2024-01-15 12:01:13.786 ***🔗 bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq from='localhost' to='bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' id='93f5bb2d4b1032eb1c115c88e9ae7a7e' type='result'> <session xmlns='urn:ietf:params:xml:ns:xmpp-session'/> </iq>
*** User 2024-01-15 12:01:13.786 ***🔗 bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <presence/>
*** User 2024-01-15 12:01:13.787 ***🔗 bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <presence from='bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' to='bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1'/>
*** User 2024-01-15 12:01:13.787 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq to='pubsub.localhost' type='set' id='alice_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-create_node' from='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <create node='node_1_iRrkTzuZ'/> </pubsub> </iq>
*** User 2024-01-15 12:01:13.788 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq from='pubsub.localhost' to='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' id='alice_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-create_node' type='result'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <create node='node_1_iRrkTzuZ'/> </pubsub> </iq>
*** User 2024-01-15 12:01:13.789 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq to='pubsub.localhost' type='set' id='alice_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-set_affs' from='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1'> <pubsub xmlns='http://jabber.org/protocol/pubsub#owner'> <affiliations node='node_1_iRrkTzuZ'> <affiliation jid='bob_dont_retrieve_other_user_pubsub_payload_602@localhost' affiliation='publish-only'/> </affiliations> </pubsub> </iq>
*** User 2024-01-15 12:01:13.789 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq from='pubsub.localhost' to='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' id='alice_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-set_affs' type='result'/>
*** User 2024-01-15 12:01:13.789 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq to='pubsub.localhost' type='set' id='alice_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-publish' from='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <publish node='node_1_iRrkTzuZ'> <item id='Item1'> <entry xmlns='http://www.w3.org/2005/Atom'>Item1Data</entry> </item> </publish> </pubsub> </iq>
*** User 2024-01-15 12:01:13.790 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq from='pubsub.localhost' to='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' id='alice_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-publish' type='result'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <publish node='node_1_iRrkTzuZ'> <item id='Item1'/> </publish> </pubsub> </iq>
*** User 2024-01-15 12:01:13.791 ***🔗 bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq to='pubsub.localhost' type='set' id='bob_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-publish' from='bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <publish node='node_1_iRrkTzuZ'> <item id='Item2'> <entry xmlns='http://www.w3.org/2005/Atom'>Item2Data</entry> </item> </publish> </pubsub> </iq>
*** User 2024-01-15 12:01:13.792 ***🔗 bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq from='pubsub.localhost' to='bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' id='bob_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-publish' type='result'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <publish node='node_1_iRrkTzuZ'> <item id='Item2'/> </publish> </pubsub> </iq>
*** User 2024-01-15 12:01:14.083 ***🔗 Execute /home/circleci/project/_build/mim1/rel/mongooseim/bin/mongooseimctl gdpr retrievePersonalData --domain localhost --resultFilepath dont_retrieve_other_user_pubsub_payload.1705320073792090603.zip --username alice_dont_retrieve_other_user_pubsub_payload_602 Result "{\n \"data\" : {\n \"gdpr\" : {\n \"retrievePersonalData\" : \"Data retrieved\"\n }\n }\n}\n" ExitStatus 0
*** User 2024-01-15 12:01:14.083 ***🔗 ResultString: { "data" : { "gdpr" : { "retrievePersonalData" : "Data retrieved" } } }
*** User 2024-01-15 12:01:14.083 ***🔗 extracting logs dont_retrieve_other_user_pubsub_payload.1705320073792090603.zip.alice_dont_retrieve_other_user_pubsub_payload_602.unzipped
*** User 2024-01-15 12:01:14.391 ***🔗 Execute /home/circleci/project/_build/mim1/rel/mongooseim/bin/mongooseimctl gdpr retrievePersonalData --domain localhost --resultFilepath dont_retrieve_other_user_pubsub_payload.1705320074085318959.zip --username bob_dont_retrieve_other_user_pubsub_payload_602 Result "{\n \"data\" : {\n \"gdpr\" : {\n \"retrievePersonalData\" : \"Data retrieved\"\n }\n }\n}\n" ExitStatus 0
*** User 2024-01-15 12:01:14.391 ***🔗 ResultString: { "data" : { "gdpr" : { "retrievePersonalData" : "Data retrieved" } } }
*** User 2024-01-15 12:01:14.391 ***🔗 extracting logs dont_retrieve_other_user_pubsub_payload.1705320074085318959.zip.bob_dont_retrieve_other_user_pubsub_payload_602.unzipped
*** User 2024-01-15 12:01:14.392 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out <iq to='pubsub.localhost' type='set' id='alice_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-delete_node' from='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1'> <pubsub xmlns='http://jabber.org/protocol/pubsub#owner'> <delete node='node_1_iRrkTzuZ'/> </pubsub> </iq>
*** User 2024-01-15 12:01:14.394 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in <iq from='pubsub.localhost' to='alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1' id='alice_dont_retrieve_other_user_pubsub_payload_602-pubsub.localhost-node_1_iRrkTzuZ-delete_node' type='result'/>
*** User 2024-01-15 12:01:14.394 ***🔗 bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out </stream:stream>
*** User 2024-01-15 12:01:14.394 ***🔗 bob_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in </stream:stream>
*** User 2024-01-15 12:01:14.394 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 out </stream:stream>
*** User 2024-01-15 12:01:14.394 ***🔗 alice_dont_retrieve_other_user_pubsub_payload_602@localhost/res1 in </stream:stream>
=== Ended at 2024-01-15 12:01:14 === successfully completed test case === === Returned value: ok
Test run history | Top level test index | Latest test result