VideoDynamicConsumer.java

package io.github.giulong.spectrum.utils.events;

import com.fasterxml.jackson.annotation.JsonView;
import io.github.giulong.spectrum.internals.jackson.views.Views.Internal;
import io.github.giulong.spectrum.types.TestData;

import java.io.File;
import java.nio.file.Path;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@JsonView(Internal.class)
public class VideoDynamicConsumer extends VideoConsumer {

    private static final Pattern PATTERN = Pattern.compile("[A-Za-z]+-(?<displayName>.*)-([a-f0-9]{8}(-[a-f0-9]{4}){4}[a-f0-9]{8})\\.png");

    private String lastFrameDisplayName;

    @Override
    protected void init() {
        super.init();
        this.lastFrameDisplayName = null;
    }

    @Override
    protected Path getVideoPathFrom(final TestData testData) {
        return testData.getDynamicVideoPath();
    }

    @Override
    protected boolean filter(final File file, final TestData testData) {
        final Matcher matcher = PATTERN.matcher(file.getName());

        return matcher.find() && testData.getDisplayName().equals(matcher.group("displayName"));
    }

    @Override
    protected boolean isNewFrame(final File screenshot, final TestData testData) {
        final String displayName = testData.getDisplayName();

        if (!displayName.equals(lastFrameDisplayName)) {
            lastFrameDisplayName = displayName;
            return true;
        }

        return super.isNewFrame(screenshot, testData);
    }
}