def run(self): self.executor.restart_app() initial_state = State(self.executor.get_source()) self.automata.add_state(initial_state) self.save_screenshot(initial_state.get_id() + '.png', self.executor.get_screenshot(), 'state') self.save_dom(initial_state) self.crawl(1) self.invariant_violation = sorted(self.invariant_violation, key=lambda k: int(k['state'])) return self.automata, self.invariant_violation, self.num_clickables