def main(font_before, font_after, out_dir):
    """Due to the fonts containing so many glyphs, style on style
    comparisons are needed."""
    auth = load_browserstack_credentials()
    logger.info('Comparing %s' % os.path.basename(font_before))
    fullname = font_before[:-4]
    font_dir = os.path.join(out_dir, fullname)
    diffbrowsers = DiffBrowsers(auth, font_dir,
                              [font_after],
                              [font_before],
                              test_browsers['all_browsers'])

    diffbrowsers.diff_view('waterfall', gen_gifs=True)
    logger.info('Resting Browserstack screenshot api')
    time.sleep(10)
    
    # Generate glyph plots for Material Design sp sizes
    for n in [11, 12, 13, 14, 16, 15, 20, 24, 34, 45, 56, 112]:
        diffbrowsers.diff_view('glyphs-all', pt=n, gen_gifs=True)
        logger.info('Resting Browserstack screenshot api')
        time.sleep(10)

    report = cli_reporter(diffbrowsers.report)
    report_path = os.path.join(font_dir, 'report.txt')
    with open(report_path, 'w') as doc:
        doc.write(report)
Пример #2
0
def main():
    parent_parser = argparse.ArgumentParser(add_help=False)
    parent_parser.add_argument('-u', '--gfr-url', default=GF_PRODUCTION_URL,
                               help="Url to GFR instance")
    parent_parser.add_argument('-l', '--gfr-local', action="store_true", default=False,
                               help="Enable this if GFR is being run locally.")
    parent_parser.add_argument('-o', '--output-dir', help="Directory for output images",
                            required=True)
    parent_parser.add_argument('-pt', '--type-point-size',
                            help="In some views, users can control type sample size")
    parent_parser.add_argument('-b', '--browsers',
                        choices=list(test_browsers.keys()),
                        default='all_browsers',
                        help="Which set of browsers to test on")
    parent_parser.add_argument('-v', '--view', choices=VIEWS, default='waterfall')
    parent_parser.add_argument('-gif', '--output-gifs', action='store_true', default=True,
                        help="Output before and after gifs")

    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest='command')

    upload_parser = subparsers.add_parser('new', parents=[parent_parser])
    upload_parser.add_argument('fonts_after', nargs="+", help="Fonts after paths")
    before_group = upload_parser.add_argument_group(title="Fonts before input")
    before_input_group = before_group.add_mutually_exclusive_group(required=True)
    before_input_group.add_argument('-fb', '--fonts-before', nargs="+",
                                  help="Fonts before paths")
    before_input_group.add_argument('-gf', '--from-googlefonts', action='store_true',
                               help="Diff against GoogleFonts instead of fonts_before")

    load_parser = subparsers.add_parser('load', parents=[parent_parser])
    load_parser.add_argument("url")

    args = parser.parse_args()

    browsers_to_test = test_browsers[args.browsers]

    diffbrowsers = DiffBrowsers(gfr_instance_url=args.gfr_url,
                                gfr_is_local=args.gfr_local,
                                dst_dir=args.output_dir,
                                browsers=browsers_to_test)

    if args.command == 'new':
        fonts_before = 'from-googlefonts' if args.from_googlefonts \
                       else args.fonts_before
        diffbrowsers.new_session(fonts_before, args.fonts_after)
    elif args.command == 'load':
        diffbrowsers.load_session(args.url)

    diffbrowsers.diff_view(args.view, args.type_point_size, args.output_gifs)

    report_path = os.path.join(args.output_dir, 'report.txt')
    with open(report_path, 'w') as doc:
        report = cli_reporter(diffbrowsers.stats)
        doc.write(report)
        print(report)
Пример #3
0
    def diffbrowsers_new_family(self):
        fonts_to_test = self._select_fonts_for_diffbrowsers()
        diffbrowsers = DiffBrowsers(self.bstack_auth, self.path)
        diffbrowsers.new_session(fonts_to_test, fonts_to_test,)
        self.gfr_url = 'http://www.gf-regression.com/compare/' + diffbrowsers.gf_regression.uuid
        diffbrowsers.diff_view('waterfall', gen_gifs=True)

        diffbrowsers.update_browsers(test_browsers['osx_browser'])
        diffbrowsers.diff_view('glyphs-all', 26, gen_gifs=True)
        self._get_images()
        self.diffbrowsers_report = cli_reporter(diffbrowsers.stats)
Пример #4
0
    def diffbrowsers_new_family(self):
        fonts_to_test = self._select_fonts_for_diffbrowsers()
        diffbrowsers = DiffBrowsers(self.bstack_auth, self.path)
        diffbrowsers.new_session(
            fonts_to_test,
            fonts_to_test,
        )
        self.gfr_url = 'http://www.gf-regression.com/compare/' + diffbrowsers.gf_regression.uuid
        diffbrowsers.diff_view('waterfall', gen_gifs=True)

        diffbrowsers.update_browsers(test_browsers['osx_browser'])
        diffbrowsers.diff_view('glyphs-all', 26, gen_gifs=True)
        self._get_images()
        self.diffbrowsers_report = cli_reporter(diffbrowsers.stats)
Пример #5
0
def main():
    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument('fonts_after', nargs="+", help="Fonts after paths")
    before_group = parser.add_argument_group(title="Fonts before input")
    before_input_group = before_group.add_mutually_exclusive_group(
        required=True)
    before_input_group.add_argument('-fb',
                                    '--fonts-before',
                                    nargs="+",
                                    help="Fonts before paths")
    before_input_group.add_argument(
        '-gf',
        '--from-googlefonts',
        action='store_true',
        help="Diff against GoogleFonts instead of fonts_before")
    parser.add_argument('-o',
                        '--output-dir',
                        help="Directory for output images",
                        required=True)

    args = parser.parse_args()
    auth = load_browserstack_credentials()

    browsers_to_test = test_browsers['all_browsers']

    fonts_before = 'from-googlefonts' if args.from_googlefonts \
                    else args.fonts_before

    diffbrowsers = DiffBrowsers(dst_dir=args.output_dir,
                                browsers=browsers_to_test)
    diffbrowsers.new_session(fonts_before, args.fonts_after)

    diffbrowsers.diff_view('waterfall', gen_gifs=True)
    logger.info("Sleeping for 10 secs. Giving Browserstack api a rest")
    time.sleep(10)

    diffbrowsers.update_browsers(test_browsers['osx_browser'])
    diffbrowsers.diff_view('glyphs-modified', gen_gifs=True)

    report = cli_reporter(diffbrowsers.stats)
    report_path = os.path.join(args.output_dir, 'report.txt')
    with open(report_path, 'w') as doc:
        doc.write(report)

    print(report)
Пример #6
0
    def diffbrowsers_family_update(self, fonts_before='from-googlefonts'):
        """Compare and regression test the fonts on different browsers.

        If the family contains more than 3 weights, select the thinnest,
        heaviest and median styles. Proofing more than 3 styles leads to
        huge images. The median style will likely pick up any multiple
        master compatibility issues."""
        fonts_to_test = self._select_fonts_for_diffbrowsers()
        diffbrowsers = DiffBrowsers(self.bstack_auth, self.path)
        diffbrowsers.new_session(fonts_before, fonts_to_test)
        self.gfr_url = 'http://www.gf-regression.com/compare/' + diffbrowsers.gf_regression.uuid

        diffbrowsers.diff_view('waterfall', gen_gifs=True)
        diffbrowsers.update_browsers(test_browsers['osx_browser'])
        diffbrowsers.diff_view('glyphs-modified', gen_gifs=True)
        diffbrowsers.diff_view('glyphs-missing', gen_gifs=True)
        diffbrowsers.diff_view('glyphs-new', gen_gifs=True)
        diffbrowsers.diff_view('glyphs-all', 26, gen_gifs=True)
        self._get_images()
        self.diffbrowsers_report = cli_reporter(diffbrowsers.stats)
Пример #7
0
    def diffbrowsers_family_update(self, fonts_before='from-googlefonts'):
        """Compare and regression test the fonts on different browsers.

        If the family contains more than 3 weights, select the thinnest,
        heaviest and median styles. Proofing more than 3 styles leads to
        huge images. The median style will likely pick up any multiple
        master compatibility issues."""
        fonts_to_test = self._select_fonts_for_diffbrowsers()
        diffbrowsers = DiffBrowsers(self.bstack_auth, self.path)
        diffbrowsers.new_session(fonts_before, fonts_to_test)
        self.gfr_url = 'http://www.gf-regression.com/compare/' + diffbrowsers.gf_regression.uuid

        diffbrowsers.diff_view('waterfall', gen_gifs=True)
        diffbrowsers.update_browsers(test_browsers['osx_browser'])
        diffbrowsers.diff_view('glyphs-modified', gen_gifs=True)
        diffbrowsers.diff_view('glyphs-missing', gen_gifs=True)
        diffbrowsers.diff_view('glyphs-new', gen_gifs=True)
        diffbrowsers.diff_view('glyphs-all', 26, gen_gifs=True)
        self._get_images()
        self.diffbrowsers_report = cli_reporter(diffbrowsers.stats)