<commit_before>![](http://cdn2.hubspot.net/hubfs/100006/images/masterqa_logo-11.png "MasterQA")
## Automation-Driven Manual QA

### MasterQA combines [SeleniumBase](https://github.com/seleniumbase/SeleniumBase/blob/master/README.md) automation with manual verification to greatly improve the productivity and sanity of QA teams.

When you can't fully automate your testing, use MasterQA to speed up your manual testing. [Here's an example of a basic MasterQA test script](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/basic_masterqa_test.py): (You'll notice that the Python syntax mostly uses natural language, with the addition of a CSS_selector used in the update_text method.)

```python
from seleniumbase import MasterQA

class MasterQATests(MasterQA):

    def test_masterqa(self):
        self.open("http://xkcd.com/1700/")
        self.verify("Do you see a webcomic?")
        self.click_link_text('Store')
        self.verify("Do you see items for sale?")
        self.update_text("input#top-search-input", "poster\n")
        self.verify("Do you see posters in the search results?")
```

When the web browser reaches http://xkcd.com/1700/ from the SeleniumBase call ``self.open("http://xkcd.com/1700/")`` (Step 1 in the screenshot below) and hits the first verification line ``self.verify("Do you see a webcomic?")``, a pop-up appears asking the manual QA tester: "Do you see a webcomic?" (Step 2 in the screenshot below):

![](http://cdn2.hubspot.net/hubfs/100006/xkcd_new_bug_chrome3.png "MasterQA Example")

Here's another example, which demonstrates the results page that appears after responding to all the verification questions. (You'll notice that failed verifications will generate links to screenshots and log files.)

![](http://cdn2.hubspot.net/hubfs/100006/images/hybrid_screen.png "MasterQA Example")

(Above: Actual screens from [masterqa_test.py](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/masterqa_test.py) running against [xkcd.com](http://xkcd.com/1522/))

Here's how to install and run MasterQA from scratch:

### Install SeleniumBase and run the example tests:
```bash
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase<commit_msg>Update the MasterQA ReadMe<commit_after>![](http://cdn2.hubspot.net/hubfs/100006/images/masterqa_logo-11.png "MasterQA")
## Automation-Driven Manual QA

### MasterQA combines [SeleniumBase](https://github.com/seleniumbase/SeleniumBase/blob/master/README.md) automation with manual verification to greatly improve QA productivity.

When you can't fully automate your testing, use MasterQA to speed up your manual testing. ([Here's an example of a basic MasterQA test script](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/basic_masterqa_test.py).)

```python
from seleniumbase import MasterQA

class MasterQATests(MasterQA):

    def test_masterqa(self):
        self.open("http://xkcd.com/1700/")
        self.verify("Do you see a webcomic?")
        self.click_link_text('Store')
        self.verify("Do you see items for sale?")
        self.update_text("input#top-search-input", "poster\n")
        self.verify("Do you see posters in the search results?")
```

After the web browser reaches http://xkcd.com/1700/ a pop-up appears asking the manual QA tester: "Do you see a webcomic?" (See steps in the screenshot below):

![](http://cdn2.hubspot.net/hubfs/100006/xkcd_new_bug_chrome3.png "MasterQA Example")

Here's another example, which demonstrates the results page that appears after responding to all the verification questions. (Failed verifications generate links to screenshots and log files.)

![](http://cdn2.hubspot.net/hubfs/100006/images/hybrid_screen.png "MasterQA Example")

(Above: Actual screens from [masterqa_test.py](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/masterqa_test.py) running against [xkcd.com](http://xkcd.com/1522/))

Here's how to install and run MasterQA from scratch:

### Install SeleniumBase and run the example tests:
```bash
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
{'fraction_non_alphanumeric': 0.11530041352468985, 'fraction_numerical': 0.018973485769885674, 'mean_word_length': 4.816124469589816, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7126703', 'n_tokens_mistral': 1365, 'n_tokens_neox': 1222, 'n_words': 374}