
import java.util.*;
import java.lang.*;
import java.io.*;   
import java.math.*;
public class Prac{     
    static class InputReader { 
        private final InputStream stream;
        private final byte[] buf = new byte[8192];
        private int curChar, snumChars;
        public InputReader(InputStream st) {
            this.stream = st;
        } 
        public int read() {
            if (snumChars == -1)
                throw new InputMismatchException();
            if (curChar >= snumChars) {
                curChar = 0;
                try {
                    snumChars = stream.read(buf);
                } 
                catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (snumChars <= 0)
                    return -1;
            }
            return buf[curChar++];
        }
        public int ni() {
            int c = read();
            while (isSpaceChar(c)) {
                c = read();
            }
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            int res = 0;
            do {
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
        } 
        public long nl() {
            int c = read();
            while (isSpaceChar(c)) {
            c = read();
            }
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            long res = 0;
            do {
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
        } 
        public int[] nia(int n) {
            int a[] = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = ni();
            }
            return a;
        } 
        public long[] nla(int n) {
            long a[] = new long[n];
            for (int i = 0; i < n; i++) {
                a[i] = nl();
            }
            return a;
        } 
        public Long[] nLa(int n) {
            Long a[] = new Long[n];
            for (int i = 0; i < n; i++) {
                a[i] = nl();
            }
            return a;
        } 
        public String rs() {
            int c = read();
            while (isSpaceChar(c)) {
                c = read();
            }
            StringBuilder res = new StringBuilder();
            do {
                res.appendCodePoint(c);
                    c = read();
            } while (!isSpaceChar(c));
            return res.toString();
        }
        public String nextLine() {
            int c = read();
            while (isSpaceChar(c))
                c = read();
            StringBuilder res = new StringBuilder();
            do {
                res.appendCodePoint(c);
                c = read();
            } while (!isEndOfLine(c));
            return res.toString();
        } 
        public boolean isSpaceChar(int c) {
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }

        private boolean isEndOfLine(int c) {
            return c == '\n' || c == '\r' || c == -1;
        } 
    }
    public static class Key {

        private final int x;
        private final int y;

        public Key(int x, int y) {
            this.x = x;
            this.y = y;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof Key)) return false;
            Key key = (Key) o;
            return x == key.x && y == key.y;
        }

        @Override
        public int hashCode() {
            int result = x;
            result = 31 * result + y;
            return result;
        }

    }
    static class Pair implements Comparable<Pair>{
            int x,y;
            Pair(int a,int b){
                    x=a;y=b;
            }
            @Override
            public int compareTo(Pair p) {
                    if(x==p.x) return y-p.y;
                    return x-p.x;
            }
    }

    static PrintWriter w = new PrintWriter(System.out);
    static long mod1=998244353L,mod=1000000007;
    static int n,m;
    static int r[]={0,1,0,-1};
    static int c[]={1,0,-1,0};
    static char arr[][];
    static boolean f=false,v[][];
    static void check(int i,int j){
        if(i==n&&j==m&&arr[i][j]=='.'){
            f=true;
            return;
        }
        
        if(i<1||i>n||j<1||j>m||arr[i][j]=='#'||f||v[i][j])return;
        v[i][j]=true;
        for(int k=0;k<4;k++){
            check(i+r[k],j+c[k]);
        }
    }
    static void update(){
        f=false;
        for(int i=0;i<n+2;i++){
            Arrays.fill(v[i],false);
        }
    }
    public static void main(String [] args){
        InputReader sc=new InputReader(System.in); 
        int t=sc.ni();
        while(t-->0){
            n=sc.ni();
            m=sc.ni();
            arr=new char[n+2][m+2];
            for(int i=0;i<(n+2);i++){
                for(int j=0;j<(m+2);j++){
                    arr[i][j]='.';
                }
            }
            v=new boolean[n+2][m+2];
            for(int i=1;i<=n;i++){
                arr[i]=('.'+sc.nextLine()+'.').toCharArray();
            }
            
            boolean f1=false;
            outer:
            for(int i=1;i<=n;i++){
                for(int j=1;j<=m;j++){
                    if(arr[i][j]=='B'){
                        if(arr[i+1][j]=='G'||arr[i-1][j]=='G'||arr[i][j+1]=='G'||arr[i][j-1]=='G'){
                            f1=true;
                            break outer;
                        }
                        if(arr[i+1][j]=='.')arr[i+1][j]='#';
                        if(arr[i-1][j]=='.')arr[i-1][j]='#';
                        if(arr[i][j-1]=='.')arr[i][j-1]='#';
                        if(arr[i][j+1]=='.')arr[i][j+1]='#';
                        
                    }
                }
            }
//            for(int i=0;i<(n+2);i++){
//                for(int j=0;j<(m+2);j++){
//                    //arr[i][j]='.';
//                    w.print(arr[i][j]);
//                }
//                w.println();
//            }
            if(f1)w.println("NO");
            else{
                for(int i=1;i<=n;i++){
                    for(int j=1;j<=m;j++){
                        if(arr[i][j]=='G'){
                            //f=false;
                            update();
                            check(i,j);
                            if(!f)f1=true;
                        }
                    }
                }
                w.println(f1?"NO":"YES");
            }
            //w.println();
            
        }
           
        w.close();
    }
}