#ifndef JHW_RUNNER #define JHW_RUNNER #include #include #include #include #include #include #include "Page.h" #include "ConsoleOutput.h" namespace HeadlessSpecRunner { class Runner: public QObject { Q_OBJECT public: Runner(); void setColors(bool colors); void reportFile(const QString &file); void addFile(const QString &spec); void go(); public slots: void log(const QString &msg); void leavePageAttempt(const QString &msg); void specPassed(); void specFailed(const QString &specDetail); void printName(const QString &name); void printResult(const QString &result); void finishSuite(const QString &duration, const QString &total, const QString& failed); private slots: void watch(bool ok); void errorLog(const QString &msg, int lineNumber, const QString &sourceID); void internalLog(const QString ¬e, const QString &msg); void addJHW(); protected: bool hasElement(const char *select); void timerEvent(QTimerEvent *event); private: HeadlessSpecRunner::Page m_page; QBasicTimer m_ticker; int m_runs; bool hasErrors; bool usedConsole; bool showColors; bool isFinished; bool didFail; bool consoleNotUsedThisRun; QQueue runnerFiles; QString reportFilename; QStack failedSpecs; HeadlessSpecRunner::ConsoleOutput consoleOutput; void red(); void green(); void yellow(); void clear(); void loadSpec(); }; } #endif