Example #1
0
    def test_results_page_renders(self):
        def app(environ, start_response):
            response = [show_variant(environ, 'exp').encode('ascii')]
            record_goal(environ, 'goal')
            start_response('200 OK', [('Content-Type', 'text/plain')])
            return response

        s = Swab(self.datadir)
        s.add_experiment('exp', ['variant1', 'variant2'], 'goal')
        r = Agent(s.middleware(app))
        r.get('/')

        assert 'A/B test results summary' in r.get('/swab/results').body
        assert 'variant1' in r.get('/swab/results').body
Example #2
0
    def test_javascript_response_not_cachable(self):
        def app(environ, start_response):
            start_response('200 OK', [('Content-Type', 'text/plain')])
            return []

        s = Swab(self.datadir)
        s.add_experiment('exp', ['a', 'b'], 'goal')
        agent = Agent(s.middleware(app))
        r = agent.get('/swab/r.js?e=exp')
        s.add_experiment('exp', ['a', 'b'], 'goal')
        assert r.response.get_header('Cache-Control') == 'no-cache'
Example #3
0
    def test_override_identity(self):
        def app(environ, start_response):
            show_variant(environ, 'exp')
            environ['swab.id'] = b'1234567890'
            start_response('200 OK', [('Content-Type', 'text/plain')])
            return []

        s = Swab(self.datadir)
        s.add_experiment('exp', 'yn')
        agent = Agent(s.middleware(app))
        assert 'swab=1234567890;' in \
                agent.get('/').response.get_header('Set-Cookie')
Example #4
0
    def test_show_variant_returns_requested_variant(self):
        def app(environ, start_response):
            start_response('200 OK', [('Content-Type', 'text/plain')])
            return [show_variant(environ, 'exp').encode('ascii')]

        s = Swab(self.datadir)
        s.add_experiment('exp', ['a', 'b'], 'goal')

        variants = set()
        for i in range(100):
            agent = Agent(s.middleware(app))
            variants.add(agent.get('/?swab.exp=a').body)
        assert variants == set('a')
Example #5
0
    def test_show_variants_produces_all_variants(self):
        def app(environ, start_response):
            start_response('200 OK', [('Content-Type', 'text/plain')])
            return [show_variant(environ, 'exp').encode('ascii')]

        s = Swab(self.datadir)
        s.add_experiment('exp', string.digits, 'goal')

        variants = set()
        for i in range(100):
            agent = Agent(s.middleware(app))
            variants.add(agent.get('/').body)
        assert len(variants) == 10
Example #6
0
 def test_goals_without_trials_ignored(self):
     s = Swab(self.datadir)
     s.add_experiment('exp', ['variant1', 'variant2'], 'goal')
     env = make_env(s)
     record_goal(env, 'goal')
     r = Agent(s.middleware(None))
     r = r.get('/swab/results')
     for row in r('table tr'):
         try:
             assert row('td')[0].text == '0'
         except IndexError:
             # Header row
             continue
Example #7
0
    def test_identity_set_and_preserved(self):
        def app(environ, start_response):
            show_variant(environ, 'exp', record=True)
            start_response('200 OK', [('Content-Type', 'text/plain')])
            return []

        s = Swab(self.datadir)
        s.add_experiment('exp', 'yn')

        agent = Agent(s.middleware(app))
        r = agent.get('/')

        assert 'swab=' in r.response.get_header('Set-Cookie'), \
                "Swab cookie not set on first request"

        r = r.get('/')
        assert 'swab=' not in r.response.get_header('Set-Cookie'), \
                "Swab cookie reset on subsequent request"