skip to main content
research-article
Open Access

Modular verification of web page layout

Published:10 October 2019Publication History
Skip Abstract Section

Abstract

Automated verification can ensure that a web page satisfies accessibility, usability, and design properties regardless of the end user's device, preferences, and assistive technologies. However, state-of-the-art verification tools for layout properties do not scale to large pages because they rely on whole-page analyses and must reason about the entire page using the complex semantics of the browser layout algorithm.

This paper introduces and formalizes modular layout proofs. A modular layout proof splits a monolithic verification problem into smaller verification problems, one for each component of a web page. Each component specification can use rely/guarantee-style preconditions to make it verifiable independently of the rest of the page and enabling reuse across multiple pages. Modular layout proofs scale verification to pages an order of magnitude larger than those supported by previous approaches.

We prototyped these techniques in a new proof assistant, Troika. In Troika, a proof author partitions a page into components and writes specifications for them. Troika then verifies the specifications, and uses those specifications to verify whole-page properties. Troika also enables the proof author to verify different component specifications with different verification tools, leveraging the strengths of each. In a case study, we use Troika to verify a large web page and demonstrate a speed-up of 13--1469x over existing tools, taking verification time from hours to seconds. We develop a systematic approach to writing Troika proofs and demonstrate it on 8 proofs of properties from prior work to show that modular layout proofs are short, easy to write, and provide benefits over existing tools.

Skip Supplemental Material Section

Supplemental Material

a151-panchekha

Presentation at OOPSLA '19

References

  1. Andrew W. Appel. 2016. Modular Verification for Computer Security. IEEE 29th Computer Security Foundations Symposium (CSF) (2016).Google ScholarGoogle Scholar
  2. Greg J. Badros, Alan Borning, Kim Marriott, and Peter J. Stuckey. 1999. Constraint Cascading Style Sheets for the Web. In Proceedings of the 12th Annual ACM Symposium on User Interface Software and Technology (UIST’15). ACM, New York, NY, USA, 73–82. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Jeffrey P. Bigham. 2014. Making the Web Easier to See with Opportunistic Accessibility Improvement. In Proceedings of the 27th Annual ACM Symposium on User Interface Software and Technology (UIST ’14). ACM, New York, NY, USA, 117–122. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Sandrine Blazy, Zaynah Dargaye, and Xavier Leroy. 2006. Formal Verification of a C Compiler Front-End. In FM 2006: Int. Symp. on Formal Methods (Lecture Notes in Computer Science), Vol. 4085. Springer, 460–475. http://xavierleroy.org/publi/ cfront.pdfGoogle ScholarGoogle ScholarDigital LibraryDigital Library
  5. Alan Borning, Richard Lin, and Kim Marriott. 1997. Constraints for the Web. In Proceedings of the Fifth ACM International Conference on Multimedia (MULTIMEDIA ’97). ACM, New York, NY, USA, 173–182. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Browserling. 2018. https://www.browserling.com/Google ScholarGoogle Scholar
  7. Browsershots. 2018. http://browsershots.org/Google ScholarGoogle Scholar
  8. Browserstack. 2018. https://www.browserstack.com/screenshotsGoogle ScholarGoogle Scholar
  9. Sagar Chaki, Edmund M. Clarke, Alex Groce, Somesh Jha, and Helmut Veith. 2003. Modular Verification of Software Components in C. IEEE Transactions on Software Engineering 30 (2003), 388–402.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. S. R. Choudhary, M. R. Prasad, and A. Orso. 2012. CrossCheck: Combining Crawling and Differencing to Better Detect Cross-browser Incompatibilities in Web Applications. In 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation. 171–180. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Ravi Chugh, Brian Hempel, Mitchell Spradlin, and Jacob Albers. 2016. Programmatic and Direct Manipulation, Together at Last. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’16). ACM, New York, NY, USA, 341–354. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Markus Dahlweid, Michal Moskal, Thomas Santen, Stephan Tobies, and Wolfram Schulte. 2009. VCC: Contract-based modular verification of concurrent C. In Software Engineering-Companion Volume, 2009. ICSE-Companion 2009. 31st International Conference on. IEEE, 429–430.Google ScholarGoogle ScholarCross RefCross Ref
  13. Burns David. 2012. Selenium 2 Testing Tools: Beginner’s Guide. Packt Publishing, Birmingham, UK.Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Leonardo De Moura and Nikolaj Bjørner. 2008. Z3: An Efficient SMT Solver. In Proceedings of the Theory and Practice of Software, 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’08/ETAPS’08). Springer-Verlag, Berlin, Heidelberg, 337–340. http://dl.acm.org/citation.cfm?id=1792734.1792766Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Thomas Dinsdale-Young, Mike Dodds, Philippa Gardner, Matthew J. Parkinson, and Viktor Vafeiadis. 2010. Concurrent Abstract Predicates. In Proceedings of the 24th European Conference on Object-oriented Programming (ECOOP’10). SpringerVerlag, Berlin, Heidelberg, 504–528. http://dl.acm.org/citation.cfm?id=1883978.1884012Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. José Fragoso Santos, Petar Maksimović, Gabriela Sampaio, and Philippa Gardner. 2019. JaVerT 2.0: Compositional Symbolic Execution for JavaScript. PACMPL 3, POPL. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Orna Grumberg and David E. Long. 1994. Model Checking and Modular Verification. ACM Transactions on Programming Languages and Systems (TOPLAS) 16, 3 (May 1994), 843–871. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Matthew Hague, Anthony Widjaja Lin, and Luke Ong. 2014. Detecting Redundant CSS Rules in HTML5 Applications: A Tree-Rewriting Approach. CoRR (2014). http://arxiv.org/abs/1412.5143Google ScholarGoogle Scholar
  19. Brent T. Hailpern and Susan S. Owicki. 1983. Modular Verification of Computer Communication Protocols. IEEE Transactions on Communications 31, 1 (1983).Google ScholarGoogle ScholarCross RefCross Ref
  20. Sylvain Hallé, Nicolas Bergeron, Francis Guerin, and Gabriel Le Breton. 2015. Testing Web Applications Through Layout Constraints. In Software Testing, Verification and Validation (ICST), 2015 IEEE 8th International Conference on. IEEE, IEEE, Graz, Austria, 1–8.Google ScholarGoogle Scholar
  21. Osamu Hashimoto and Brad A. Myers. 1992. Graphical Styles for Building Interfaces by Demonstration. In Proceedings of the 5th Annual ACM Symposium on User Interface Software and Technology (UIST ’92). ACM, New York, NY, USA, 117–124. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. ITU. 2015. ITU releases 2015 ICT figure. http://www.itu.int/net/pressoffice/press_releases/2015/17.aspxGoogle ScholarGoogle Scholar
  23. Ralf Jung, Robbert Krebbers, Lars Birkedal, and Derek Dreyer. 2016. Higher-order ghost state. In ICFP. ACM, 256–269.Google ScholarGoogle Scholar
  24. Ralf Jung, David Swasey, Filip Sieczkowski, Kasper Svendsen, Aaron Turon, Lars Birkedal, and Derek Dreyer. 2015. Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning. In POPL. ACM, 637–650.Google ScholarGoogle Scholar
  25. K. Rustan M. Leino. 2010. Dafny: An Automatic Program Verifier for Functional Correctness (LPAR’10). http://dl.acm.org/ citation.cfm?id=1939141.1939161Google ScholarGoogle Scholar
  26. Xavier Leroy. 2006. Formal certification of a compiler back-end, or: programming a compiler with a proof assistant. In 33rd ACM symposium on Principles of Programming Languages. ACM Press, 42–54. http://xavierleroy.org/publi/compilercertif.pdfGoogle ScholarGoogle ScholarDigital LibraryDigital Library
  27. Hsiang-Sheng Liang, Kuan-Hung Kuo, Po-Wei Lee, Yu-Chien Chan, Yu-Chin Lin, and Mike Y. Chen. 2013. SeeSS: Seeing What I Broke – Visualizing Change Impact of Cascading Style Sheets (CSS). In Proceedings of the 26th Annual ACM Symposium on User Interface Software and Technology (UIST ’13). ACM, New York, NY, USA, 353–356. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Sonal Mahajan, Negarsadat Abolhassani, Phil McMinn, and William G.J. Halfond. 2018a. Automated Repair of Mobile Friendly Problems in Web Pages. In International Conference on Software Engineering (ICSE 2018). ACM, 140–150.Google ScholarGoogle Scholar
  29. Sonal Mahajan, Abdulmajeed Alameer, Phil McMinn, and William G. J. Halfond. 2017. Automated Repair of Layout Cross Browser Issues Using Search-based Techniques. In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2017). ACM, New York, NY, USA, 249–260. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. S. Mahajan, A. Alameer, P. McMinn, and W. G. J. Halfond. 2018b. Automated Repair of Internationalization Presentation Failures in Web Pages Using Style Similarity Clustering and Search-Based Techniques. In 2018 IEEE 11th International Conference on Software Testing, Verification and Validation (ICST). 215–226. Google ScholarGoogle ScholarCross RefCross Ref
  31. Jennifer Mankoff, Holly Fait, and Tu Tran. 2005. Is Your Web Page Accessible?: A Comparative Study of Methods for Assessing Web Page Accessibility for the Blind. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI ’05). ACM, New York, NY, USA, 41–50. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Josip Maras, Jan Carlson, and Ivica Crnkovic. 2012. Extracting Client-side Web Application Code. In World Wide Web Conference 2012. ACM. http://www.es.mdh.se/publications/2340-Google ScholarGoogle Scholar
  33. Josip Maras, Maja Štula, and Jan Carlson. 2014. Firecrow: A Tool for Web Application Analysis and Reus. In Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering (ASE ’14). ACM, New York, NY, USA, 847–850. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. A. Mesbah and M. R. Prasad. 2011. Automated cross-browser compatibility testing. In 2011 33rd International Conference on Software Engineering (ICSE). 561–570. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Leo A. Meyerovich and Rastislav Bodik. 2010. Fast and Parallel Webpage Layout. In Proceedings of the 19th International Conference on World Wide Web (WWW ’10). ACM, New York, NY, USA, 711–720. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Aleksandar Nanevski, Ruy Ley-Wild, Ilya Sergey, and Germán Andrés Delbianco. 2014. Communicating State Transition Systems for Fine-Grained Concurrent Resources. In ESOP (LNCS), Vol. 8410. Springer, 290–310.Google ScholarGoogle Scholar
  37. National Federation for the Blind. 2016. Blindness Statistics. https://nfb.org/blindness- statisticsGoogle ScholarGoogle Scholar
  38. Mark Otto and Jacob Thornton. 2015. Bootstrap: the world’s most popular mobile-first and responsive front-end framework. http://getbootstrap.com/Google ScholarGoogle Scholar
  39. Pavel Panchekha, Adam T. Geller, Michael D Ernst, Zachary Tatlock, and Shoaib Kamil. 2018. Verifying That Web Pages Have Accessible Layout (PLDI’18). Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Pavel Panchekha and Emina Torlak. 2016. Automated Reasoning for Web Page Layout. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016). ACM, New York, NY, USA, 181–194. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Azalea Raad, Jules Villard, and Philippa Gardner. 2015. CoLoSL: Concurrent Local Subjective Logic. In ESOP (LNCS), Vol. 9032. Springer.Google ScholarGoogle Scholar
  42. Shauvik Roy Choudhary, Husayn Versee, and Alessandro Orso. 2010. WEBDIFF: Automated Identification of Cross-browser Issues in Web Applications. In Proceedings of the 2010 IEEE International Conference on Software Maintenance (ICSM ’10). IEEE Computer Society, Washington, DC, USA, 1–10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Joel Spolsky. 2018. Joel on Software. https://joelonsoftware.comGoogle ScholarGoogle Scholar
  44. Eugene W. Stark. 1985. A Proof Technique for Rely/Guarantee Properties. In Proceedings of the Fifth Conference on Foundations of Software Technology and Theoretical Computer Science. Springer-Verlag, Berlin, Heidelberg, 369–391. http://dl.acm.org/citation.cfm?id=646823.706907Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Ivan E. Sutherland. 1964. Sketch Pad a Man-machine Graphical Communication System. In Proceedings of the SHARE Design Automation Workshop (DAC ’64). ACM, New York, NY, USA, 6.329–6.346. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Kasper Svendsen and Lars Birkedal. 2014. Impredicative Concurrent Abstract Predicates. In ESOP (LNCS), Vol. 8410. Springer, 149–168.Google ScholarGoogle Scholar
  47. Array Themes. 2018. https://arraythemes.comGoogle ScholarGoogle Scholar
  48. Aaron Turon, Viktor Vafeiadis, and Derek Dreyer. 2014. GPS: navigating weak memory with ghosts, protocols, and separation. In OOPSLA’14. ACM, 691–707.Google ScholarGoogle Scholar
  49. Aaron Joseph Turon, Jacob Thamsborg, Amal Ahmed, Lars Birkedal, and Derek Dreyer. 2013. Logical relations for fine-grained concurrency. In POPL’13. ACM, 343–356.Google ScholarGoogle Scholar
  50. Christopher J. van Wyk. 1982. A High-Level Language for Specifying Pictures. ACM Trans. Graph. 1, 2 (April 1982), 163–182. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. W3C. 2011. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. https://www.w3.org/TR/2011/REC- CSS2-20110607/Google ScholarGoogle Scholar
  52. Thomas A. Walsh, Gregory M. Kapfhammer, and Phil McMinn. 2017. Automated Layout Failure Detection for Responsive Web Pages Without an Explicit Oracle. In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2017). ACM, New York, NY, USA, 192–202. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. T. A. Walsh, P. McMinn, and G. M. Kapfhammer. 2015. Automatic Detection of Potential Layout Faults Following Changes to Responsive Web Pages (N). In 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE). 709–714. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Leland Wilkinson. 2005. The Grammar of Graphics (Statistics and Computing). Springer-Verlag New York, Inc., Secaucus, NJ, USA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Brad Vander Zanden and Brad A. Myers. 1991. The Lapidary Graphical Interface Design Tool. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI ’91). ACM, New York, NY, USA, 465–466. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Modular verification of web page layout

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image Proceedings of the ACM on Programming Languages
        Proceedings of the ACM on Programming Languages  Volume 3, Issue OOPSLA
        October 2019
        2077 pages
        EISSN:2475-1421
        DOI:10.1145/3366395
        Issue’s Table of Contents

        Copyright © 2019 Owner/Author

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 10 October 2019
        Published in pacmpl Volume 3, Issue OOPSLA

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!