{"id":3141,"date":"2012-06-22T09:24:00","date_gmt":"2012-06-22T09:24:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/bharry\/2012\/06\/22\/devexpress-announces-full-coded-ui-support\/"},"modified":"2024-05-02T14:02:45","modified_gmt":"2024-05-02T21:02:45","slug":"devexpress-announces-full-coded-ui-support","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/bharry\/devexpress-announces-full-coded-ui-support\/","title":{"rendered":"DevExpress announces full coded UI support"},"content":{"rendered":"<p>Visual Studio has a variety of ways to test your code. \u2013 one of them we call \u201cCoded UI\u201d.\u00a0 Coded UI testing is useful when you want to automate a full functional test, as a user would do it, against the UI of your application.\u00a0 You usually start by recording a test case \u2013 you manually execute the test in the app and the recorder watches what you do.\u00a0 You also define as set of things you want to verify about the result.\u00a0 It turns your actions into a sequence of events to send to controls in your application.\u00a0 It can generate code for that sequence of events and you can then tweak that code if you like.<\/p>\n<p>In order to do this, the Coded UI tools have to be able to reach into your app and automate actions against its various components.\u00a0 As a general rule, doing that at the top level \u2013 key strokes and mouse clicks is a bad idea because it makes the test too fragile and too difficult to maintain.\u00a0 Those lower level events are turned into application level actions \u2013 button pushes, list selection, etc.\u00a0 In order to do that, your app must expose the structure\/behavior of its controls in a way that can be automated.\u00a0 Of course, we\u2019ve made sure it works for all the built in controls but what about custom controls or 3rd party controls?<\/p>\n<p>We need to understand them.\u00a0 To enable that we support automating using Microsoft Active Accessibility (MSAA) which is the same interface screen readers and the like use to help people with disabilities use software.\u00a0 The advantage of doing it that way is that a control implementer can, in one fell swoop, make their controls both accessible and testable \u2013 a double benefit.<\/p>\n<p>MSAA gives you a basic level of testability but you can go further \u2013 enabling validation, composition of lower-level actions into logical actions, etc.\u00a0 And the more you do, the richer your testing support can be.\u00a0 For automating tests on custom controls, one can follow the below ladder to add Coded UI support as described in the blog <a href=\"http:\/\/blogs.msdn.com\/b\/visualstudioalm\/archive\/2011\/10\/28\/coded-ui-test-extension-for-3rd-party-controls-the-basics-explained.aspx\">http:\/\/blogs.msdn.com\/b\/visualstudioalm\/archive\/2011\/10\/28\/coded-ui-test-extension-for-3rd-party-controls-the-basics-explained.aspx<\/a>.\u00a0 The graphic here shows a path from no support to\u00a0rich testing support with Coded UI tests.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2012\/06\/7776.clip_image001_thumb_4E7B8F49.jpg\"><img decoding=\"async\" class=\"alignnone size-full wp-image-16043\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2012\/06\/7776.clip_image001_thumb_4E7B8F49.jpg\" alt=\"Image 7776 clip image001 thumb 4E7B8F49\" width=\"428\" height=\"250\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2012\/06\/7776.clip_image001_thumb_4E7B8F49.jpg 428w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2012\/06\/7776.clip_image001_thumb_4E7B8F49-300x175.jpg 300w\" sizes=\"(max-width: 428px) 100vw, 428px\" \/><\/a><\/p>\n<p>We are glad to announce that <a href=\"http:\/\/devexpress.com\/products\/net\/controls\/winforms\/coded-ui\/\">DevExpress<\/a> is the first 3rd party control vendor to have gone past implementing MSAA and have enabled all the above scenarios.\u00a0 One can start recording actions on a DXperience 12.1 WinForms control using Coded UI Test Builder and play them back using Coded UI Test.\u00a0 These controls also expose meaningful rich properties that could be used for functional validation during automation test, for example, validate the control specific property RowIndex on a XtraPivotGrid control.\u00a0 DevExpress has also added rich APIs to ease authoring of Coded UI Tests on custom controls.\u00a0 Last but not the least, conversion of sequence of actions into meaningful intent has been made possible through the aggregation filters, for example, navigation through filter tree to set filter condition on a grid is now converted to one composite action which sets the filter value.<\/p>\n<p>You should check out the DevExpress controls.<\/p>\n<p>Brian<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio has a variety of ways to test your code. \u2013 one of them we call \u201cCoded UI\u201d.\u00a0 Coded UI testing is useful when you want to automate a full functional test, as a user would do it, against the UI of your application.\u00a0 You usually start by recording a test case \u2013 you [&hellip;]<\/p>\n","protected":false},"author":244,"featured_media":14617,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[4],"class_list":["post-3141","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>Visual Studio has a variety of ways to test your code. \u2013 one of them we call \u201cCoded UI\u201d.\u00a0 Coded UI testing is useful when you want to automate a full functional test, as a user would do it, against the UI of your application.\u00a0 You usually start by recording a test case \u2013 you [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/3141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/users\/244"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/comments?post=3141"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/3141\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media\/14617"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media?parent=3141"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/categories?post=3141"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/tags?post=3141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}