import java.io.*;
import java.util.*;


public class Main {
    static class node{
        int k,v;
        node(int k,int v){
            this.k = k;
            this.v = v;
        }
        node(){}
    }


    static void solve(Scanner in) throws Exception {
        int r = in.nextInt(), c = in.nextInt();
        char[][] map = new char[r][c];
        List<Integer> goodlist = new ArrayList<>();
        for(int i=0;i<r;i++){
            map[i] = in.next().toCharArray();
        }
        int[] path = new int[]{0,1,0,-1,0};
        for(int i=0;i<r;i++){
            for(int j=0;j<c;j++){
                if(map[i][j]=='B'){
                    for(int k=0;k<4;k++){
                        int ii = i+path[k];
                        int jj = j+path[k+1];
                        if(ii<0||ii>=r||jj<0||jj>=c)continue;
                        if(map[ii][jj]=='G'){
                            System.out.println("No");
                            return;
                        }
                        else if(map[ii][jj]=='.') map[ii][jj]='#';
                    }
                }
                else if(map[i][j]=='G') goodlist.add(i*c+j);
            }
        }
        LinkedList<Integer> que = new LinkedList<>();
        if(map[r-1][c-1]=='#'){
            System.out.println(goodlist.size()==0?"Yes":"No");
            return;
        }
        que.add(r*c-1);
        HashSet<Integer> visited = new HashSet<>();
        visited.add(r*c-1);
        while(que.size()!=0){
            int val = que.removeFirst();
            int i = val/c,j=val%c;
            for(int k=0;k<4;k++){
                int ii= i+path[k];
                int jj = j+path[k+1];
                if(ii<0||ii>=r||jj<0||jj>=c)continue;
                if(map[ii][jj]!='#'&&visited.add(ii*c+jj)){
                    que.addLast(ii*c+jj);
                    map[ii][jj]='Y';
                }
            }
        }
        for(int val : goodlist){
            if(map[val/c][val%c]!='Y'){
                System.out.println("No");
                return;
            }
        }
        System.out.println("Yes");



    }

    public static int[] readIntArray(Scanner in,int tokens) {
        int[] ret = new int[tokens];
        for (int i = 0; i < tokens; i++) {
            ret[i] = in.nextInt();
        }
        return ret;
    }


    public static void main(String[] args) throws Exception{
//                Scanner in = new Scanner(System.in);
//         Scanner in = new Scanner(new File("input.txt"));
        Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
//        solve(in);

        int T = in.nextInt();
        for(int i=1;i<=T;i++){
            solve(in);
        }
    }

}

