iWAL (intuitive Web Automation Language) Ashima Arora : System Integrator Nithin Reddy : Project Manager Pranita Dewan : System Architect Priyanka Singh : System Tester Rafica AR : Language Guru Your wish is my command! Motivation Make web browser automation simpler and more productive Automate monotonous tasks on the web easily Wide spectrum of users, not familiar with advanced programming Save time Have fun! What is iWAL? A simple programming language designed to assist amateur programmers in writing programs that make web-browsing automatic, time-saving and a fun experience! tabE(..,..,..,) mainYacc() Sample iWAL program Start the browser Open the web page Accept username Accept password Input username & password Click login button Demo! Syntactic Constructs Data Types Loops Conditionals Functions Data Types int double boolean string Loops repeat loop until loop Functions • User-defined • Inbuilt- a whole suite of functions for the iWAL user! You can write your own functions! A whole set of inbuilt functions and more! Some more inbuilt funcs… print() Password Input() clickE() getPageText() writeTo File() clickLink() sleep() inputE() Architecture Type Checking Perform type checking by traversing the AST generated by the parser. • Variable assignment • Function definition • Function call • Operations on appropriate types • if-else constructs • Type checking in loops • Use after declaration Scope Checking Information for variables and functions in scope 2 Information for variables and functions in scope 1 Scope = 2 Scope = 1 Scope = 0 Global scope Information for variables and functions in scope 0 Symbol Table Development Environment PLY 3.4-2build1 Python 2.7.3 Java SE 6 (1.6.0) Selenium 2.39.0.2 Local Mac/Windows IDLE Runtime Environment 1. “make filename” on terminal. 2. iWAL program compiled. 3. “make run” on terminal. 4. Java code is run. Testing Methodology Incremental Approach Unit Testing Peer Review Regression Testing Challenges The grammar evolved... Code size grew bigger! Integration issues Test Plan Used Python’s unittest testing framework Tested ilexer,iyaccer,intrinsic functions & final code ilexer:- Used several equality assertions to check correctness. iyaccer:- Used test cases written in testcases file to generate AST and final code. Output files inspected by a team member. Intrinsic functions:- Test cases written. Verified by a team member testing_ilexer.py Output of Test run testing_iyaccer.py Output of Test run A few test cases for intrinsic functions… Project Management Project Management Weekly meetings with the team Scheduled meetings with our mentor Junde Documents sharing over Google Drive Collaborative coding, version control over Github Discussions over whatsapp group Report writing on sharelatex.com # of commits Project Management Date Github Commits By Date Day of the week Project Management Time of the day What worked & What didn’t What worked well: Achieved most of what we envisioned Fun, satisfying experience! What did not: Should have listened to Prof. and started even sooner! Hard time narrowing down problem domain Lessons Learnt… Ashima:- Keep an open mind and be a good listener. Nithin:- It's easy to get good players. Getting them to play together, that’s the hard part. Pranita:- Disagreements are a part of any group project. Try to resolve them logically and amicably. Priyanka:- There is a lot of learning to take from group discussions and brainstorming sessions. If you're stuck at a point, take a second opinion. Rafica:- Have regular meetings with your mentors. Their insights can help a lot. Why iWAL? Intuitive Simplifies web automation Wide applicability Powerful built-in functions Frustrated Project Manager.. Special Thanks to: Prof. Alfred Aho and Junde Huang Our repo on Github: https://github.com/rafica/iWAL